目的:在与第三方系统之间的数据交换,一般数据的格式为以XML的形式进行传输;但在实际应用中,一条信息中,可能包含附件、html正文,且html正文中包含图片;那么势必也要把这些数据也要进行传输,这样才能保障一条信息的完整性。
解决思路:
1、所有的图片、附件都以二进制进行传输;
2、要记录html正文中图片的对应位置;因为在html正文中,图片一般都是以img以上存在,并无实际数据;
3、建议以以下格式进行规划;
<Data>
<Item>
<Record> //记录信息,主要包括数据库字段信息
</Record>
<Images>
<Image ImgPlaceholder=”Guid”> // ImgPlaceholder:正文中的占位符,表达方式{{guid}}
//二进制数据
</Image>
<Image>
//二进制数据
</Image>
…
<Images>
<Attachments>
<Attachment>
//二进制数据
</Attachment>
<Attachment>
//二进制数据
</Attachment>
….
</Attachments>
</Item>
<Item>
</Item>
</Data>
编程思路:
1、获取正文内容;遍历所有img标签 url;
2、将图片转成二进制
3、遍历图片src字符串 string[]
参考:
1、通过http访问图片,并将图片专程二进制;
publicstatic byte[] getByte(String imgUrl) {
try {
URL url = new URL(imgUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
// connection.getResponseCode();
connection.setConnectTimeout(10000);
BufferedImage image = ImageIO.read(connection.getInputStream());
ByteArrayOutputStream out = newByteArrayOutputStream();
ImageIO.write(image, "jpg", out);
return out.toByteArray();
} catch(MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
returnnull;
}