通过HTTP POST发送二进制和Textdata

时间:2012-01-25 13:24:38

标签: java http streamwriter

我尝试使用HTTP POST将一些数据发送到服务器。 服务器期望$ _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 =”)?

2 个答案:

答案 0 :(得分:2)

我建议您将数据转换为Base64字符串(与所有系统兼容)。

string result = Convert.ToBase64String(Encoding.UTF8.GetBytes(utf8Text));

答案 1 :(得分:0)

是的,要使用POST编写文本,您需要写入`OutputStream。

对于参数,您需要创建一个键值对的String(以&分隔)并在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的文章How to use java.net.URLConnection to fire and handle HTTP requests?