Android使用HttpURLConnection进行image/jpeg格式的POST请求

3

我正在尝试使用HttpURLConnection发送POST请求中的图像。我拥有以下代码:

String i3 = String.valueOf(System.currentTimeMillis());
ByteArrayOutputStream i4 = new ByteArrayOutputStream();
i4.write(("--" + i3 + System.lineSeparator()
        + "Content-Disposition: form-data; name=\"" + I1.this.i2 + "\"; filename=\"" + I1.this.i2 + ".jpg\"" + System.lineSeparator()
        + "Content-Type: image/jpeg" + System.lineSeparator()
        + "Content-Length: " + String.valueOf(i2.this.i1.length) + System.lineSeparator() + System.lineSeparator()).getBytes());
i4.flush();
i4.write(i2.this.i1);
i4.flush();
i4.write((System.lineSeparator() + System.lineSeparator() + "--" + i3 + "--").getBytes());
i4.flush();
i4.close();
HttpURLConnection i5 = (HttpURLConnection) new URL(myUrl).openConnection();
i5.setRequestMethod("POST");
i5.setDoOutput(true);
i5.setRequestProperty("User-Agent", "Mozilla/5.0");
i5.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + i3);
i5.setFixedLengthStreamingMode(i4.toByteArray().length);
i5.connect();
OutputStream i6 = i5.getOutputStream();
i6.write(i4.toByteArray());
i6.flush();
i6.close();
System.out.println(i5.getResponseCode() + " " + i5.getResponseMessage());
i5.disconnect();

但是当我尝试获取连接应用程序的响应代码/消息时,它抛出了一个异常:
07-28 12:15:00.722: java.io.IOException: unexpected end of stream on Connection{123.456.789.012:80, proxy=DIRECT@ hostAddress=123.456.789.012 cipherSuite=none protocol=http/1.1} (recycle count=0)
也许问题在于我的发布请求有错误或语法错误?您能帮助我并告诉我错在哪里吗?
我在Windows上的Java应用程序中测试了此代码!请求的结果是200 OK。结论:Android存在问题!但我仍然不知道具体是什么问题。
1个回答

0
我找到了解决方案!这个丑陋的字符串 System.lineSeparator() 需要替换为旧的 \r\n!太好了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接