gpt4 book ai didi

java - 使用http发送二进制数据

转载 作者:行者123 更新时间:2023-12-01 14:08:10 25 4
gpt4 key购买 nike

我需要发送一条分为两部分的二进制消息:

  1. 第一部分是 4 个字节,它有一些信息(比如一个整数)
  2. 第二部分有一个 XML 文本流。

我以前从未做过这样的事情,我该怎么做?

我的代码是这样的:

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 个字节的文本?

最佳答案

(信息)HTTP 协议(protocol)使用方法 PUT 来“传输服务器上的文件”(而不是 POST)。

二进制数据的传输最好不要使用内容类型“text/...”,而应使用“application/bin”。

但是,您可以将 XML 作为“text/xml; charset=UTF-8”发送,并使用您自己的 header

connection.setHeader("MyCode",
String.format("%02x%02x%02x%02x", bytes[0], bytes[1], bytes[2], bytes[3]));

如果全部以二进制形式发送,请勿使用 Writer(将字节转换为某种字符编码),而是使用 Stream (BufferedOutputStream)。 XML 为:

byte[] xmlBytes = xml.getBytes("UTF-8");

如果 <?xml ...> 中没有提到其他编码,则为 UTF-8 .

close()已经冲水了,所以flush()不需要。

关于java - 使用http发送二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18741971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com