我需要发送二进制消息,该消息分为两部分:
我之前从未做过这样的事情,我怎么能这样做?
我的代码是这样的:
public String serverCall(String link, String data){
HttpURLConnection connection;
OutputStreamWriter writer = null;
URL url = null;
String parameters = data;
try
{
url = new URL(link);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "text/xml");
connection.setRequestMethod("POST");
writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(parameters);
writer.flush();
writer.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
如何将XML设置为4个字节,如何在其之前有4个字节的文本?
答案 0 :(得分:1)
(Info)HTTP协议使用方法PUT“在服务器上传输文件”(而不是POST)。
二进制数据的传输最好没有内容类型“text / ...”而是“application / bin”。
然而,您可以将XML发送为“text / xml; charset = UTF-8”,并使用您自己的标题
connection.setHeader("MyCode",
String.format("%02x%02x%02x%02x", bytes[0], bytes[1], bytes[2], bytes[3]));
如果以二进制形式发送all,请不要使用Writer(将字节转换为某些字符编码),而是使用Stream(BufferedOutputStream)。 XML为:
byte[] xmlBytes = xml.getBytes("UTF-8");
如果<?xml ...>
中没有提及其他编码,则为UTF-8。
close()
已经刷新,因此不需要flush()
。
答案 1 :(得分:0)
如果消息的二进制部分仅为4个字节,则对其进行百分比编码并将其作为附加的url参数发送。或者,将其添加到现有的xml流中。
java类Uri
和URLEncoder
提供了必要的方法。