我尝试使用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 =”)?
答案 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?