2012-03-29 38 views
0

我試圖發送一些數據到一個網址與一些職位數據。 Iv嘗試了以下代碼: -Java Http POST沒有按預期工作?

try { 
     // Construct data 
     String data = URLEncoder.encode("appid", "UTF-8") + "=" + URLEncoder.encode("2", "UTF-8"); 
     data += "&" + URLEncoder.encode("secret", "UTF-8") + "=" + URLEncoder.encode("APPSECRET", "UTF-8"); 
     data += "&" + URLEncoder.encode("usermcaccount", "UTF-8") + "=" + URLEncoder.encode("NAME", "UTF-8"); 
     data += "&" + URLEncoder.encode("actiontype", "UTF-8") + "=" + URLEncoder.encode("ACTION", "UTF-8"); 
     data += "&" + URLEncoder.encode("serverip", "UTF-8") + "=" + URLEncoder.encode("IP", "UTF-8"); 


     // Send data 
     URL url = new URL("http://maiacraft.com/api/"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setDoInput(true); 
     conn.setRequestMethod("POST"); 
     DataOutputStream outStream; 


     OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); 

     //write parameters 
     writer.write(data); 
     writer.flush(); 
     writer.close(); 




    } catch (Exception e) { 
    } 

但它似乎並沒有將其發佈到服務器。所有的服務器端代碼工作,因爲它允許來自另一個頁面,但不是從這個Java代碼發佈的請求...

任何想法?

+1

我會開始記錄任何異常。 – hvgotcodes 2012-03-29 23:20:49

+0

根據代碼 – 2012-03-29 23:22:43

+0

檢查響應代碼以及inputStream/errorStream您可能需要查看[Apache HttpComponents](http://hc.apache.org/)。 – Perception 2012-03-29 23:24:08

回答

3

任何想法?

  1. 你是不是檢查HTTP響應狀態。這會給你一些線索,看看哪裏出了問題。響應狀態可以指示各種事物;例如你的請求參數是錯誤的,URL是錯誤的,你沒有權限,你需要登錄,服務器關閉,等等。

  2. 如果您得到非2xx響應代碼,響應主體中可能會有更多信息。您可以通過打開和讀取連接對象的錯誤流來訪問它。

  3. 檢查服務器日誌。

  4. 嘗試使用網絡瀏覽器或類似curlwget的實用程序提交相同的請求。 (將POST自變量放入文件中或將它們附加到URL中。)

  5. 捕獲並仔細檢查Java程序實際發送的編碼POST數據。您可以修改程序在發送之前打印data,或者您可以使用Wireshark(或同等功能)從線路讀取請求。一旦你捕獲了數據,仔細比較它與HTML規範中關於編碼表單數據的內容;請參閱http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4

  6. 最後,您並未在請求中設置內容類型標頭。很可能是因爲這導致服務器忽略POST數據。閱讀HTTP規範瞭解應該設置的標題的描述。 (在這種情況下,您應該使用由MIME類型「application/x-www-form-urlencoded」和您正在使用的內容編碼 - 「UTF-8」組成的內容類型;請參閱http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17


我就不提了異常的代碼示例結束擠壓憎惡 ....

哎呀。我只是:-)