0

投稿データを含む URL にデータを送信しようとしています。Ivは次のコードを試しました:-

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 コードからは許可しないため、機能しています...

何か案は?

4

1 に答える 1

3

何か案は?

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

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

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

  4. curlWeb ブラウザ、またはや などのユーティリティを使用して、同じ要求を送信してみてください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/プロトコル/rfc2616/rfc2616-sec14.html#sec14.17 )


コードサンプルの最後にある例外をつぶす忌まわしさについては言及しません....

おっと。今やりました :-)

于 2012-03-29T23:48:29.750 に答える