HTTP通信の概要
HTTP通信には、投稿して取得する2つの方法があります。前者は、HTTPメッセージエンティティを介してサーバーにデータを送信します。これは非常に安全で、後者はURLクエリ文字列を介してサーバーパラメーターに渡され、Plainのブラウザアドレスバーに表示されます。テキストは、最大2048文字を送信できますただし、GETリクエストは準備ができていません。GETリクエストは、主にクエリ(リソースの読み取り)に使用されます。これは効率的です。投稿リクエストは、登録やログイン、データベースへのデータの書き込みなどの高度なセキュリティ操作に使用されます。
投稿と取得に加えて、HTTPと通信する他の方法があります! HTTPリクエストの方法を参照してください
コーディング前の準備
エンコーディングが実行される前に、最初にサーブレットを作成します。サーブレットは、クライアントパラメーター(名前と年齢)を受信し、クライアントに応答します。
@webservlet(urlpatterns = {"/demo.do"})パブリッククラスDemoservletはhttpservletを拡張します{prive static final longversionuid = 1l "); setcontenttype(" text/html; charset = utf-8 "); getによるサービス。 ServicetException、IOException F-8 "); respons.setContentType(" text/html; charset = utf-8 "); string name =request。getParameter(" name "); string age = request.getParameter(" age "); ; printwriter pw.getwriter(); ;}}
JDKを使用してHTTP通信を実装します
urlConnectionを使用して、GETリクエストを実装します
java.net.urlオブジェクトを調べます。
URLオブジェクトのOpenConnection()メソッドを介してjava.net.urlconnectionを取得します。
urlconnectionオブジェクトのgetInputStream()メソッドを介して入力ストリームを取得します。
入力ストリームをお読みください。
リソースを閉じます。
public void get()スロー{url url = new url( "http://127.0.1/http/demo.name = jack&age = 10");新しいBufferedReader(urlconnection.getInputStream()、 "utf-8"); ){sb.append(line + "/n");} system.out.println(sb.tostring());}
httpurlconnectionを使用して、POSTリクエストを実装します
java.net.httpurlconnectionはjava.net.urlのサブクラスであり、HTTPでより多くの操作を提供します(getXxxおよびsetXXXメソッド)。このクラスでは、一連のHTTPステータスコードを定義します。
public void postは、url url = new url( "http://127.0.0.1/http/demo.do"); SetDoOutput(True); (httpurlconnection.getOutputStream()); flush(); ){// data sb.append(line + "/n");} system.out.println(sb.tostring());}
HTTP通信にはhttpclientを使用します
HTTPClientは、JDKでのHTTP通信の実装を大幅に簡素化します。
メイブン依存症:
<Dependency> groupId> org.apache.httpComponents </groupId> <artifactid> httpclient </artifactid> <バージョン> 4.3.6 </version> </dependency>
リクエストを取得します
public void httpclientget()スロー例外{// httpclientオブジェクトhttpclientクライアント= httpclients.createdefault(); 40 "); // httpClientオブジェクトの実行方法を呼び出して応答を取得してhttpresponse応答= client.execute(get); // httpresponse seオブジェクトのgetentityメソッドは応答エンティティhttpentity httpentity = response.getentity( ); // entityUtilsツールクラスを使用して、文字列results = entityutils.tostring(httpentity、 "utf-8");
リクエストを投稿します
public void httppclientpost()スロー例外{// httpclientオブジェクトhttpclient client = httpclients.createdefault(); ; //基本的なキー値ペアを保存するためのリストコンテナ(パラメーター名 - パラメーター値)<BasicNameValuePair>パラメーター= new ArrayList <()(); san "))文字列httprespons.execute(post); ;}
HTTPCLIENTは、HTTPプロトコルをサポートする効率的で最新の機能が豊富なクライアントプログラミングツールキットを提供するために、Apache Jakarta Commonの下のサブプロジェクトであり、HTTPプロトコルの最新バージョンと提案をサポートしています。 HTTPCLIENTは、Apache Jakarta CactusとHTMLunitの両方で知られている2つのオープンソースプロジェクトなど、多くのプロジェクトに適用されています。どちらもHTTPClientを使用しています。