【发布时间】:2019-07-02 06:00:39
【问题描述】:
我正在尝试使用 java.net.HttpURLConnection 将文件上传(POST)到端点,但我不断收到 http 代码 400(错误请求)。
我参考了Send File And Parameters To Server With HttpURLConnection in android API 23
但问题是我需要将此文件作为请求正文参数 (file=) 发送。
注意:这些文件只会很小(4-5mb),所以我完全在内存中阅读它。
对应的curl请求是:
curl -X POST "API" -H "Content-Type: multipart/form-data" -F "file="
我正在使用的代码摘录:
Proxy webproxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("
<proxy host>", <proxy_port>));
HttpURLConnection http_conn = (HttpURLConnection)
url.openConnection(webproxy);
String authorization = getAuthorization(access_token);
http_conn.setRequestMethod("POST");
http_conn.setRequestProperty("Accept-Charset", "UTF-8");
http_conn.setRequestProperty("Authorization", authorization);
http_conn.setRequestProperty("Connection", "Keep-Alive");
http_conn.setRequestProperty("Content-Type", "multipart/form-data);
http_conn.setDoOutput(true);
http_conn.setDoInput(true);
DataOutputStream outputStream;
outputStream = new DataOutputStream(http_conn.getOutputStream());
File file_obj = new File(this.file);
byte[] allBytes = new byte[(int) file_obj.length()];
FileInputStream fileInputStream = new FileInputStream(file_obj);
outputStream.write("file=".getBytes("UTF-8")); <---Trying to add file param here
fileInputStream.read(allBytes);
outputStream.write(allBytes);
发布我刚刚使用以下代码读取响应(适用于不同的 GET 请求):
InputStream inputStream = http_conn.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(inputStream));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
data = data + line;
}
注意:我很少使用 java,对它不是很熟悉,所以请在您的回复中进行描述。
【问题讨论】:
标签: java multipartform-data httpurlconnection sophoslabs-intelix