Android:HttpUrlConnectionは(GETの代わりに)POSTを使用してリクエスト本文を送信します

フロリアン・メッツ

私は(私たち自身の)APIと通信するAndroidアプリケーションを開発しています。これは、リクエストメソッドPOSTを使用した操作リクエストと非操作リクエストGETAPIを使用することを目的としていましたRESTfulアプリケーションの場合と同様)。

リクエストを認証またはパラメータを追加するために、HTTPリクエスト本文が使用されています(GETリクエストとPOSTリクエストの両方で)。(はい、HTTP定義ごとにGETリクエストにリクエストボディを追加することが可能であり、許可されています(たとえば、この投稿を参照))。投稿には通常、リクエスト本文を追加することは可能であると書かれていますが、サーバーはリクエスト中にそれを使用しない場合があります。

問題は、リクエストメソッドが常にPOSTに設定されていることです。接続構成中に、どこかでgetRequestMethodGETに設定しても、を介してGETに設定した後にGETが返されても、マザーは発生しませんsetRequestMethod("GET")

AndroidアプリケーションはHttpsURLConnectionを使用します(これはHttpURLConnectionの拡張クラスであるため、同様に動作する必要があります)。

これらのメソッドを呼び出すことにより、リクエストボディに参加します。

https.setDoInput(true);
OutputStream os = https.getOutputStream();
os.write(outputInBytes);
os.close();

また、を呼び出すことhttps.setRequestMethod("GET")により、リクエストメソッドをGETに設定する必要があります。

少し調べた後、行OutputStream os = https.getOutputStream();はリクエストメソッドをPOSTに設定し、その後、もう一度GETに設定すると、接続が終了するまでGETのままになります(によって返されるhttps.getRequestMethod()

しかし、最終的にサーバーはリクエストメソッドPOSTでリクエストを受信します。

したがって、私の具体的な質問は次のとおりです。

  • この問題の可能な回避策/解決策はありますか?
  • リクエスト本文をGETリクエストに追加するのは本当に悪いことですか?

現在、すべてのリクエストをPOSTに設定したばかりなので、問題はありません(このままにしておくのは問題ありませんが、いくつかの理由から、他に方法がないことを確認したいと思います。この問題を修正してください)

編集:getOutputStream()メソッドドキュメントには次のように書かれています。

このメソッドが呼び出されると、デフォルトのリクエストメソッドは「POST」に変更されます。

xiaomi

デフォルトでHttpURLConnectionは、これはGETメソッドです(getDoInput()デフォルトではtrue)。

使用setDoOutput(true)するとPOSTメソッドになります。

別のメソッド(PUT、DELETEなど)が必要な場合は、setRequestMethod(string)を使用します。

そしてもちろん、あなたが前にあなたが望む方法を選択する必要がありますconnect()方法

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

LaravelはPOSTリクエストの代わりにGETを送信しています

分類Dev

どのようにHttpURLConnectionを使用してリクエスト本文でデータを送信しますか?

分類Dev

androidの使用は常にgetの代わりにリクエストを投稿します

分類Dev

httpCon.setRequestMethod( "GET");にもかかわらず、HttpURLConnectionはPOSTリクエストを送信します。設定されています

分類Dev

c#httpclientPostAsJsonがPOSTの代わりにGETリクエストを送信する

分類Dev

Angular $ httpはpostの代わりにgetを送信します

分類Dev

PHPはPOSTの代わりにGETを送信します

分類Dev

間違った資格情報を使用してPOSTリクエストは、405の代わりに401を返します

分類Dev

graphiqlはクエリ文字列の代わりに投稿本文として送信します

分類Dev

AndroidのOKhttpでPOSTリクエストを介してJSON本文を送信する

分類Dev

eclipselink jpaは、COUNT(*)の代わりにCOUNT(id)を使用してカウントクエリを生成します

分類Dev

Fuelを使用して本文でGETリクエストを送信します

分類Dev

印刷の代わりにログまたは戻り値を使用してクリックをテストする

分類Dev

Html.RenderActionはGetの代わりにPostを使用します

分類Dev

form_forは、パッチの代わりにGETリクエストを発行します

分類Dev

AWSを使用したReWriteルールを使用してhttpをhttpsにリダイレクトすると、ProxyPassを使用する代わりに、すべてのリクエストがデフォルトのウェブルートに送信されます

分類Dev

ReactJsでaxiosを使用してPOSTリクエストを送信すると、$ _FILESは空になります

分類Dev

Ajaxは代わりにgetを送信して投稿します

分類Dev

nodeJSアプリが疑わしいGET / POSTリクエストを送信しています。ウイルスはありますか?

分類Dev

ループの代わりにLINQを使用してネストされたリストをクエリする

分類Dev

SparkはHTTPPostリクエストの本文としてDataFrameを送信します

分類Dev

AJAX POSTはデータを送信せず、代わりにGETメソッドを介して送信します

分類Dev

POSTの代わりにGETリクエストを使用するFlaskテストクライアント

分類Dev

SwiftPOSTリクエストは空の本文を送信します

分類Dev

JSON本文を使用してQtでPOSTリクエストを送信する方法

分類Dev

Guzzlehttpを使用してJSON本文でPOSTリクエストを送信する

分類Dev

JSON本文を使用してJavaでPOSTリクエストを送信する方法

分類Dev

INの代わりにINNERJOINを使用しても、MySQLクエリは非常に遅くなります

分類Dev

ファイルの代わりに実際のデータを使用してcurlリクエストを送信するPython

Related 関連記事

  1. 1

    LaravelはPOSTリクエストの代わりにGETを送信しています

  2. 2

    どのようにHttpURLConnectionを使用してリクエスト本文でデータを送信しますか?

  3. 3

    androidの使用は常にgetの代わりにリクエストを投稿します

  4. 4

    httpCon.setRequestMethod( "GET");にもかかわらず、HttpURLConnectionはPOSTリクエストを送信します。設定されています

  5. 5

    c#httpclientPostAsJsonがPOSTの代わりにGETリクエストを送信する

  6. 6

    Angular $ httpはpostの代わりにgetを送信します

  7. 7

    PHPはPOSTの代わりにGETを送信します

  8. 8

    間違った資格情報を使用してPOSTリクエストは、405の代わりに401を返します

  9. 9

    graphiqlはクエリ文字列の代わりに投稿本文として送信します

  10. 10

    AndroidのOKhttpでPOSTリクエストを介してJSON本文を送信する

  11. 11

    eclipselink jpaは、COUNT(*)の代わりにCOUNT(id)を使用してカウントクエリを生成します

  12. 12

    Fuelを使用して本文でGETリクエストを送信します

  13. 13

    印刷の代わりにログまたは戻り値を使用してクリックをテストする

  14. 14

    Html.RenderActionはGetの代わりにPostを使用します

  15. 15

    form_forは、パッチの代わりにGETリクエストを発行します

  16. 16

    AWSを使用したReWriteルールを使用してhttpをhttpsにリダイレクトすると、ProxyPassを使用する代わりに、すべてのリクエストがデフォルトのウェブルートに送信されます

  17. 17

    ReactJsでaxiosを使用してPOSTリクエストを送信すると、$ _FILESは空になります

  18. 18

    Ajaxは代わりにgetを送信して投稿します

  19. 19

    nodeJSアプリが疑わしいGET / POSTリクエストを送信しています。ウイルスはありますか?

  20. 20

    ループの代わりにLINQを使用してネストされたリストをクエリする

  21. 21

    SparkはHTTPPostリクエストの本文としてDataFrameを送信します

  22. 22

    AJAX POSTはデータを送信せず、代わりにGETメソッドを介して送信します

  23. 23

    POSTの代わりにGETリクエストを使用するFlaskテストクライアント

  24. 24

    SwiftPOSTリクエストは空の本文を送信します

  25. 25

    JSON本文を使用してQtでPOSTリクエストを送信する方法

  26. 26

    Guzzlehttpを使用してJSON本文でPOSTリクエストを送信する

  27. 27

    JSON本文を使用してJavaでPOSTリクエストを送信する方法

  28. 28

    INの代わりにINNERJOINを使用しても、MySQLクエリは非常に遅くなります

  29. 29

    ファイルの代わりに実際のデータを使用してcurlリクエストを送信するPython

ホットタグ

アーカイブ