0

シンプルな Android クライアント サーバー アプリを動作させようとしてきましたが、問題はありませんでした。誰かがこのコードを見て、私が間違っていることを確認できることを願っています。おそらく、間違った順序で作業を行っているか、何かを忘れていますか? 関連する部分を追加するだけです

            HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
            conn.addRequestProperty("Content-Type", "application/json");

            // set some made up parameters
            String str =  "{'login':'superman@super.com','password':'password'}";
            byte[] outputInBytes = str.getBytes("UTF-8");
            OutputStream os = conn.getOutputStream();
            os.write( outputInBytes );
            os.close();

            // connection.setDoOutput(true); //should trigger POST - move above -> crash
            conn.setRequestMethod("POST");  // explicitly set POST -move above so we can set params -> crash
            conn.setDoInput(true);

私が得るエラーは

「例外: java.net.ProtocolException: メソッドはリクエスト本文をサポートしていません: GET」

パラメータなしで POST リクエストを実行するだけなら問題ないので、connection.setDoOutput(true); を移動する必要があると思います。または conn.setRequestMethod("POST"); より高い、それは正しく動作するはずですか?私がそれをすると、エラーが発生します:

例外: java.net.ProtocolException: 接続は既に確立されています。

したがって、パラメーターを追加する前に POST に設定しようとすると機能しません。機能しない後に設定しようとすると...何が欠けていますか? これを行うべき別の方法はありますか?パラメータを間違って追加していませんか? 簡単な Android ネットワークの例を探していましたが、何も見つかりませんでした。Android の公式サイトに例はありますか? 私がやりたいのは非常に基本的なネットワーク操作だけです。これはとてもイライラします!

編集:上記のコードに含まれていない理由で HttpsURLConnection を使用する必要があります-認証する必要がある、ホストを信頼する必要があるなど-可能な場合、上記のコードの潜在的な修正を本当に探しています。

4

2 に答える 2