Java 通过HTTP POST发送二进制和文本数据

Java 通过HTTP POST发送二进制和文本数据,java,http,streamwriter,Java,Http,Streamwriter,我尝试使用HTTPPOST向服务器发送一些数据。 服务器需要$\u POST['file']中的二进制数据 URL url = new URL("http://example.com"); URLConnection connection = url.openConnection(); connection.setDoOutput(true); OutputStream outputStream = connection.getO

我尝试使用HTTPPOST向服务器发送一些数据。 服务器需要$\u POST['file']中的二进制数据

        URL url = new URL("http://example.com");
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);
        OutputStream outputStream =  connection.getOutputStream();
        outputStream.write("file=".getBytes());

                //byte[] buffer contains the data
            outputStream.write(buffer);         
        outputStream.close();

OutputStream.write是写入流的正确方法吗?我是否必须处理缓冲区以外的字符串(“file=”)?

是的,要使用
POST
写入文本,您需要写入'OutputStream'

对于参数,您需要创建一个键值对字符串(用
&
分隔),并将该数据的字节数组写入
OutputStream
,如下所示:

String parameterString = "file=" + parameters.get("file") + "&" + "other=" + parameter.get("other");
outputStream.write(parameterString.getBytes("UTF-8"); //Don't forget, HTTP protocol supports UTF-8 encoding.
outputStream.flush();


要使用
URLConnection
进行文件上载,请参阅BalusC的文章我建议将数据转换为Base64字符串(与所有系统兼容)


问题是,我必须发送一个二进制文件的内容。我不认为我可以将其添加到“file=”中,可以吗?
string result = Convert.ToBase64String(Encoding.UTF8.GetBytes(utf8Text));