我需要从 Google App Engine中运行的 Java Web应用向 MediaFire REST API 发送 HTTP POST请求 ,以便上传文件。
请参阅上传功能文档here(几行)。
查看文档和一些研究,我编写了以下Java代码来提出相应的请求:
byte[] bytesData = //byte array with file data
URL url = new URL("http://www.mediafire.com/api/upload/upload.php?" +
"session_token=" + sessionToken);
//Configure connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setReadTimeout(60000);
//Set headers
conn.setRequestProperty("Content-Type", "application/octet-stream");
conn.setRequestProperty("x-filename", fileName);
conn.setRequestProperty("x-filesize", fileSize);
conn.setRequestProperty("x-filehash", sha256);
//Write binary data
System.out.println("\nWriting data...");
OutputStream out = conn.getOutputStream();
out.write(bytesData);
out.flush();
//Check connection
//if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
// throw new RuntimeException("FAILED!!! HTTP error code: " +
// conn.getResponseCode() + " --- " +
// conn.getResponseMessage());
//}
//Get response
System.out.println("\nGetting response...");
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//Print response
System.out.println("\nOutput from Server .... \n");
String output;
while ((output = br.readLine()) != null) {
System.out.println(output);
}
但我没有得到任何结果,只是:
Writing data...
Getting response...
Output from Server:
如果我取消评论 //Check connection
下的行,我会收到Exception
:
java.lang.RuntimeException: FAILED!!! HTTP error code: 503 --- OK
如果我更改了Content-Type
的{{1}}标题,我会得到一个不同的multipart/form-data
:
Exception
我不太了解HTTP连接等等,我不知道发生了什么......
关于可能发生的事情的任何想法?
注意:我正在使用来自同一个应用程序的API的其他(GET)方法,它们运行正常。
答案 0 :(得分:0)
HTTP错误代码:400是错误请求的状态代码,这可能意味着服务器不包括multipart / form-data,503代码意味着服务器重载,所以这个服务可能托管在不同的服务器/线程上在服务器上的其他GET方法,可能会收到更多的流量。