Java 使用http发送二进制数据
我需要发送一条分为两部分的二进制消息:Java 使用http发送二进制数据,java,http,post,Java,Http,Post,我需要发送一条分为两部分的二进制消息: 第一部分是4个字节,它包含一些信息(比如一个整数) 第二部分有一个XMLtext流 我从来没有做过这样的事,我怎么能这样做呢 我的代码是这样的: public String serverCall(String link, String data){ HttpURLConnection connection; OutputStreamWriter writer = null; URL url = nul
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个字节的文本?如果消息的二进制部分仅为4个字节,请对其进行百分比编码并将其作为附加url参数发送。或者,将其添加到现有的xml流中 java类和提供了必要的方法。(信息)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]));
如果以二进制形式发送所有数据,则不要使用写入程序(将字节转换为某些字符编码),而是使用流(BufferedOutputStream)。XML格式为:
byte[] xmlBytes = xml.getBytes("UTF-8");
如果
中没有提到其他编码,则为UTF-8
close()
已刷新,因此不需要flush()
。请将标题中的“binnay”更改为“binary”,听起来您可能需要一个多部分请求application/octet-stream
将是一种更适合任意二进制数据的内容类型,不是吗?@Dev事实上,我个人使用它,我喜欢这个古老的名称;八位字节=字节。