私は、それが必ずしもHTTPポストが起ころうとしていることを意味するものではないHTTP java.net.URL
を作成し、それにopenConnection()
を呼び出す場合は?私はopenStream()
がGETを意味することを知っています。もしそうなら、生のソケットレイヤーを扱わなくても、他のHTTP動詞のどれを実行すればよいですか?新しいURL(...)openConnection()は必然的にPOSTを意味しますか?
答えて
あなたがopenConnection()
を使用してURLConnection
オブジェクトを取得した場合には、実際にサーバとの通信を開始しません。それはURLConnection()
からストリームを取得するまで発生しません。最初に接続を取得すると、ヘッダやその他の接続プロパティを実際に開く前に追加/変更できます。
のURLConnectionのライフサイクルは少し奇妙です。ストリームの1つを取得するまで、サーバーにヘッダーを送信しません。入力ストリームを取得したら、GETを行い、ヘッダーを送信してから、出力を読むことができます。あなたが出力ストリームを取得したら、それはあなたがそれにデータを書き込むことを前提としているので、POSTとして送信すると信じています(出力ストリームが動作するにはsetDoOutput(true)
に電話する必要があります)。入力ストリームを取得するとすぐに、出力ストリームは閉じられ、サーバーからの応答を待ちます。例えば
、これはPOSTを実行する必要があります。
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write("Hi there!");
os.close();
InputStream is = conn.getInputStream();
// read stuff here
これがGET操作を行うだろうが:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
InputStream is = conn.getInputStream();
// read stuff here
URLConnection
は、他の奇妙なことを行います。サーバは、コンテンツの長さを指定している場合、それはその多くのデータを受信するまで、その後URLConnection
は、明示的それを閉じ場合でも、オープン基礎となる入力ストリームを維持します。 URLConnection
はネットワーク接続を開いたままにしているため、クライアントをきれいにシャットダウンするため、これは多くの問題を引き起こしました。これはたぶんgetStream()
を使用してもおそらく存在するでしょう。
ありません、それはしていません。しかし、URLのプロトコルがHTTPの場合、戻りオブジェクトとしてHttpURLConnection
が返されます。このクラスには、使用するHTTPメソッドを指定するsetRequestMethod
メソッドがあります。
あなたはより洗練されたものをしたい場合は、おそらくJakarta HttpClientのようなライブラリを使用した方がいいでしょう。
- 1. 新しい静的な意味は?
- 2. Bash: '$(())'は 'expr'を意味し、 '[]'は 'テスト'を意味しますか?
- 3. @eval($ _ POST [1])の意味は
- 4. authSourceはmongoデータベースのURLで何を意味しますか?
- 5. Django-urlの "name"は何を意味しますか?
- 6. #/はURLで何を意味しますか?
- 7. 意味的に正しいjQueryトリガー
- 8. TYPO3: "注入"は "必要"を意味しますか?
- 9. 意味論は何を意味しますか?
- 10. このシンプルなプログラムは意味的に正しいですか?
- 11. 「元のPOSTデータを新しい場所に再送信する」とは、sqlmapの意味ですか?
- 12. 意味2ルータリンク意味URLあり
- 13. PHPの意味と動的URL .htaccessを使用して
- 14. LeetCodeはC++の意味的エラーを無視しますか?
- 15. enumは静的クラスを意味しますか?
- 16. 0x0Fは何を意味していますか?そして、このコードはどういう意味ですか?
- 17. ハッシュテーブルから意味的にデータを取得します
- 18. GmailのURLで「ik」とは何を意味していますか?
- 19. URL「http://www.w3.org/TR/CSS21」の「TR」は何を意味していますか?
- 20. 客観的な意味での意味は何ですか?
- 21. WPFのSnapsToDevicePixelsは基本的に何を意味していますか?
- 22. 新しい(getClass())の意味は何ですか?
- 23. 「===」はJavascript/Jqueryを意味しますか?
- 24. IndexOutofRangeExceptionは何を意味しますか?
- 25. @ ElementCollectionはorphanRemovalを意味しますか?
- 26. !viは何を意味しますか?
- 27. {login}は何を意味しますか
- 28. force_reloadは何を意味しますか?
- 29. コンパイラは何を意味しますか?
- 30. (+ var)は何を意味しますか