我正在使用以下代码通过 HTTP POST 上传文件,但我从服务器收到 500 Internal Server Error 响应。
能否请您看一下,让我知道哪个代码部分是罪魁祸首/缺失。 HTTPS 连接没有错误,我认为 header 中存在问题,因此服务器不接受此请求。
// Check server address
url = new URL("https://example.com");
String protocol = url.getProtocol();
String host = url.getHost();
String serviceRoot = url.getPath();
// Build POST request
HttpPost post = new HttpPost(new URI(protocol + "://" + host
+ serviceRoot));
post.addHeader("User-Agent", "Test");
post.addHeader("Content-type", "multipart/form-data");
post.addHeader("Accept", "image/jpg");
String authValue = "Basic "
+ Base64
.encodeBase64ToString(("username" + ":"
+ "password").getBytes()) + " " + "realm=\"example.com\"";
if (authValue != null) {
post.addHeader("Authorization", authValue);
}
File file = new File("/sdcard/Download/IMAG0306.jpg");
FileBody data = new FileBody(file);
String file_type = "jpg" ;
String description = "Test";
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("file_name", new StringBody( file.getName() ) );
reqEntity.addPart("description", new StringBody(description));
reqEntity.addPart("file_type", new StringBody(file_type));
reqEntity.addPart("data", data);
post.setEntity(reqEntity);
if (true) {
String trace = ">>> Send HTTP request:";
trace += "\n " + post.getMethod() + " "
+ post.getRequestLine().getUri();
System.out.println(trace);
}
if (true) {
String trace = "<<< Send HTTP request-->:";
trace += "\n" + post.toString();
Header[] headers = post.getAllHeaders();
for (Header header : headers) {
trace += "\n" + header.getName() + " " + header.getValue();
}
System.out.println(trace);
}
HttpClient httpClient = createHttpClient();
// replace with your url
// “Authorization”, “Basic ” + encodedUsernamePassword);
if (httpClient != null) {
response = httpClient.execute(post);
if (true) {
String trace = "<<< Receive HTTP response:";
trace += "\n" + response.getStatusLine().toString();
Header[] headers = response.getAllHeaders();
for (Header header : headers) {
trace += "\n" + header.getName() + " " + header.getValue();
}
System.out.println(trace);
}
} else {
throw new IOException("HTTP client not found");
}
谢谢
最佳答案
500 Internal Server Error 是服务器错误,即。问题出在服务器端,而不是客户端。您需要检查服务器日志以了解问题所在。
标题很好。如果 header 错误,您将收到 400 Bad Request 或其他一些 4xx 错误。
关于java - 来自 HTTP POST 请求的 500 内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258554/