1
我需要從谷歌應用程序引擎運行的Java Web應用程序發送HTTP POST請求到主人MediaFire REST API,在爲了上傳文件。的Java:發送POST HTTP請求,將文件上傳到主人MediaFire REST API
請參閱上傳功能文檔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
頭爲multipart/form-data
我得到一個不同的Exception
:
java.lang.RuntimeException: FAILED!!! HTTP error code: 400 --- OK
我不知道太多關於HTTP連接等和我不知道發生了什麼事......
想法什麼可能進行的任何想法?
注:我使用的是來自同一個應用程序的API的其他(GET)方法和他們完美的工作。