シンプルな 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 を使用する必要があります-認証する必要がある、ホストを信頼する必要があるなど-可能な場合、上記のコードの潜在的な修正を本当に探しています。