[ターン] Javaは外部インタフェースAPIを呼び出し、HTTPリクエストをシミュレート(A):HttpURLConnectionの間の差のHttpClient

  JAVA、およびorg.apache.http.client.HttpClient java.net.HttpURLConnectionの二つのクラスでは、HTTPリクエストのアナログ実装することができます。

  HttpURLConnectionのJDKのすべての操作のHTTPリクエストを実装するクラスを提供することである、しかし、その原子に向けて付勢操作の方法、従って、単純な複雑かつ面倒なためH​​ttpURLConnectionのHTTPリクエストは、HTTP要求を達成するための。HttpClientをクラスとは、特に優れた最適化を達成するために作られた複雑なHTTPリクエストを、さらにHttpURLConnectionのパッケージを作っています。

転載注:次のテキストコンテンツは、「中国漁船」から再生された
免責事項:この記事は元の記事CSDNブロガー「中国漁船」で、CC以下バイ4.0 SAの著作権契約、複製、元のソースのリンクと、この文を添付してください。
オリジナルリンク:HTTPS:// blog.csdn.net/amosjob/article/details/82782546

開始--------- -------テキスト

、HttpURLConnectionのオブジェクト

  1. HttpURLConnectionのクラスURLのOpenConnectionメソッド()メソッドによって得られることが必要オブジェクト、それが直接構築することができません。

HttpsURLConnectionはurlconn = nullを
URLのURL = 新しいURL(アドレス); 
urlconn =(HttpsURLConnectionの)url.openConnection();

  2. HttpURLConnectionの接続()関数が、実際にはサーバとのTCP接続をセットアップし、HTTPリクエストを送信するには、実用的ではありません。HTTPリクエストは、我々は実際に公式て送信(たとえば、コールのgetInputStream()、getResponseCode()メソッドなど)サーバーの応答データを得るまで。そして構成HttpURLConnectionの目的は、connect()メソッドが実行される前に完了する必要があります。

urlconn = (HttpsURLConnectionの)url.openConnection(); 
urlconn.setRequestMethod( "GET" ); 
urlconn.setConnectTimeout( 5000 ); 
urlconn.setReadTimeout( 5000 ); 
urlconn.setUseCaches(); 
urlconn.connect();

  3. HttpURLConnectionのは、基礎となるソケット通信により実現されるHTTPプロトコルに基づいています。あなたはタイムアウト(タイムアウト)を設定しない場合は、異常なネットワーク条件下では、それは死者をダウン継続しないプログラムを引き起こす可能性があります。

公共のHttpURLConnection(URLのURL、Stringを、int型I){
 この(URL、新しいプロキシ(java.net.Proxy.Type.HTTP、
InetSocketAddress.createUnresolved(S、I))); 
}

  HTTPボディのOutputStreamストリームの書き込みを通じて4.コンテンツは、ストリームに書き込まれたデータは、直ちにネットワークに送信しませんが、現在のシャットダウンを生成する際にバッファメモリに、コンテンツ記述されたHTTPボディに基づきます。

  getInputStreamコール()メソッドからの読み取り要求された情報を返すためにHTTPサーバの入力ストリームを返し5。

InputStream InputStreamは= urlconn.getInputStream()。
InputStreamReader InputStreamReaderの = 新しい InputStreamReaderの(InputStreamの、 "UTF-8" ); 
BufferedReaderのバフ = 新しいをBufferedReader(InputStreamReaderの); 
列ライン = buff.readLine()。
一方、(ライン!= NULL ){ 
System.out.printlnは(ライン) = buff.readLine()。
} 
inputStream.close()。
inputStreamReader.close(); 
buff.close();

  6.私たちは、手動でHTTPリクエストを送信するHttpURLConnection.connect()メソッドを使用することができますが、要求が自動的に開始されたときにHTTPレスポンスを取得したい場合、例えば、我々は時間のHttpURLConnection.getInputStream()メソッドを使用して、その必要はありません()メソッドを呼び出して接続します。

 

二、HttpClientをオブジェクト

  HttpClientをはHttpURLConnectionのセッション、クッキーのを処理対象物に比べて簡略化されています。

  HttpClientをはHttpURLConnectionのすべてのオブジェクトが行うことができます行うことができますHttpURLConnectionの、HttpClientをの強化版であると言うことができます。

  オープンソースのApacheのHttpClientは、それは、ブラウザがHTTPリクエストを送信するように設定されていない、シンプルなHTTPクライアントであるHTTPレスポンスを受信されています。しかし、サーバーからの応答はキャッシュされません。それはちょうど応答を受信し、どのように送信要求に焦点を当て、およびHTTP接続を管理します。

 

HttpClientを使用

次の手順限り、送信要求は、応答を受信することは非常に簡単でのHttpClientを使用してください。

  1.创建のHttpClient对象、CloseableHttpClientにHTTPClient = HttpClients.createDefault()。

  2. HTTPGETオブジェクトを作成し、GETリクエストを送信する必要がある場合、あなたはHttpPostのオブジェクトを作成するためのPOSTリクエストを送信する必要がある場合。

  前記送信要求パラメータは、HTTPGET、HttpPost共通のsetHeader()メソッド又は要求パラメータを追加するためのaddHeader()メソッドを呼び出すことができる場合、HttpPostのオブジェクトは、(方法設定リクエストパラメータをsetEntityを呼び出すことができます。

UrlEncodedFormEntityエンティティ= 新しいUrlEncodedFormEntity(のparams); 
httpPost.setEntity(エンティティ)

  4.コールのHttpClientオブジェクトは、メソッドを実行する、(HttpUriRequestリクエスト)の送信要求を実行するには、のHttpResponseを返します。

  5)(のHttpResponse getAllHeadersを呼び出し、getHeaders(文字列名)などが最初のサーバに応答して得ることができ、呼び出しのHttpResponse getEntity()メソッドは、パッケージに応答してHttpEntityオブジェクトコンテンツサーバを取得します。オブジェクトに応じて、コンテンツサーバを介して利用可能なプログラム。

テキストEND --------- -------

第三に、推奨読書

  1. HttpClientをと違いHttpURLConnectionの
  2. HttpClientを使用して点と相違点のHttpURLConnectionの
  3. HTTPClientのGET / POSTリクエストの例を実装します
  4. HTTPClentバイナリデータのアップロード例について
  5. HttpURLConnectionのGET / POSTリクエストの例を実装します

 

おすすめ

転載: www.cnblogs.com/newbie27/p/11404365.html