2012-03-29 9 views
0

ポストデータを含むURLにデータを送信しようとしています。 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

+0

また、コード –

+0

に従ってレスポンスコードとinputStream/errorStreamを確認してください。[Apache HttpComponents](http://hc.apache.org/)を見てください。 – Perception

答えて

3

  1. あなたは、HTTPレスポンスのステータスをチェックされていません。それは間違っていることについてあなたにいくつかの手がかりを与えるでしょう。応答ステータスは、さまざまな種類のものを示すことができます。例えばリクエストパラメータが間違っている、URLが間違っている、権限がない、ログインする必要がある、サーバーがダウンしているなど

  2. 2xx以外の応答コードを取得した場合、応答本体にはさらに多くの情報が含まれる可能性があります。接続オブジェクトのエラー・ストリームを開いて読み取ることでアクセスできます。

  3. サーバーログを確認します。

  4. ウェブブラウザ、またはcurlまたはwgetのようなユーティリティを使用して、同じリクエストを送信してみてください。 (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を参照)からなるコンテンツタイプを使用する必要があります。


私は、コードサンプルの最後に醜態を潰し例外については言及しています....

メールで送信。私はちょうど:-)

関連する問題