JAVAを使ったhttp通信について詳しく解説
HTTP通信の概要
HTTP通信には主にPOSTメソッドとGETメソッドの2つのメソッドがあります。前者は、HTTP メッセージ エンティティを介してサーバーにデータを送信します。これは、セキュリティが高く、データ送信サイズに制限がありません。後者は、URL のクエリ文字列をサーバー パラメータに渡し、ブラウザのアドレス バーにプレーン テキストで表示します。機密性が低く、最大 2048 文字を送信できます。ただし、GET リクエストは役に立たないわけではありません。GET リクエストは主にクエリ (リソースの読み取り) に使用され、非常に効率的です。 POST リクエストは、登録、ログイン、その他の高いセキュリティでの操作とデータベースへのデータの書き込みに使用されます。
http 通信には POST と GET 以外にもさまざまな方法があります。 httpリクエストメソッドをご覧ください
エンコード前の準備
エンコードの前に、まずクライアントのパラメータ(名前と年齢)を受け取り、クライアントに応答するサーブレットを作成します。
@WebServlet(urlPatterns={"/demo.do"}) public class DemoServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String name = request.getParameter("name"); String age = request.getParameter("age"); PrintWriter pw = response.getWriter(); pw.print("您使用GET方式请求该Servlet。<br />" + "name = " + name + ",age = " + age); pw.flush(); pw.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); String name = request.getParameter("name"); String age = request.getParameter("age"); PrintWriter pw = response.getWriter(); pw.print("您使用POST方式请求该Servlet。<br />" + "name = " + name + ",age = " + age); pw.flush(); pw.close(); } }
JDK を使用して http 通信を実装します
URLConnection を使用して GET リクエストを実装します
java.net.URL オブジェクトをインスタンス化します
URL オブジェクトの openConnection() メソッドを使用して java.net.URLConnection を取得します。 URLConnection オブジェクトの getInputStream () メソッドは入力ストリームを取得します。
はリソースを閉じます。
public void get() throws Exception{ URL url = new URL("http://127.0.0.1/http/demo.do?name=Jack&age=10"); URLConnection urlConnection = url.openConnection(); // 打开连接 BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(),"utf-8")); // 获取输入流 String line = null; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { sb.append(line + "\n"); } System.out.println(sb.toString()); }
HttpURLConnection を使用して POST リクエストを実装します
java.net.HttpURLConnection は java.net.URL のサブクラスであり、より多くの http 操作 (getXXX および setXXX メソッド) を提供します。一連の HTTP ステータス コードがこのクラスで定義されています:
public void post() throws IOException{ URL url = new URL("http://127.0.0.1/http/demo.do"); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); // 设置该连接是可以输出的 httpURLConnection.setRequestMethod("POST"); // 设置请求方式 httpURLConnection.setRequestProperty("charset", "utf-8"); PrintWriter pw = new PrintWriter(new BufferedOutputStream(httpURLConnection.getOutputStream())); pw.write("name=welcome"); // 向连接中输出数据(相当于发送数据给服务器) pw.write("&age=14"); pw.flush(); pw.close(); BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(),"utf-8")); String line = null; StringBuilder sb = new StringBuilder(); while ((line = br.readLine()) != null) { // 读取数据 sb.append(line + "\n"); } System.out.println(sb.toString()); }

http 通信に httpclient を使用する
httpclient により、JDK での http 通信の実装が大幅に簡素化されます。
Maven 依存関係:
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.6</version> </dependency>
GETリクエスト
public void httpclientGet() throws Exception{ // 创建HttpClient对象 HttpClient client = HttpClients.createDefault(); // 创建GET请求(在构造器中传入URL字符串即可) HttpGet get = new HttpGet("http://127.0.0.1/http/demo.do?name=admin&age=40"); // 调用HttpClient对象的execute方法获得响应 HttpResponse response = client.execute(get); // 调用HttpResponse对象的getEntity方法得到响应实体 HttpEntity httpEntity = response.getEntity(); // 使用EntityUtils工具类得到响应的字符串表示 String result = EntityUtils.toString(httpEntity,"utf-8"); System.out.println(result); }
POSTリクエスト
public void httpclientPost() throws Exception{ // 创建HttpClient对象 HttpClient client = HttpClients.createDefault(); // 创建POST请求 HttpPost post = new HttpPost("http://127.0.0.1/http/demo.do"); // 创建一个List容器,用于存放基本键值对(基本键值对即:参数名-参数值) List<BasicNameValuePair> parameters = new ArrayList<>(); parameters.add(new BasicNameValuePair("name", "张三")); parameters.add(new BasicNameValuePair("age", "25")); // 向POST请求中添加消息实体 post.setEntity(new UrlEncodedFormEntity(parameters, "utf-8")); // 得到响应并转化成字符串 HttpResponse response = client.execute(post); HttpEntity httpEntity = response.getEntity(); String result = EntityUtils.toString(httpEntity,"utf-8"); System.out.println(result); }
HttpClient は Apache Jakarta Common のサブプロジェクトであり、提供するために使用されます。効率的 HTTP プロトコルをサポートする、機能が豊富な最新のクライアント プログラミング ツールキット。HTTP プロトコルの最新バージョンと推奨事項をサポートします。 HttpClient は多くのプロジェクトで使用されています。たとえば、Apache Jakarta 上の他の 2 つの有名なオープン ソース プロジェクト、Cactus および HTMLUnit はどちらも HttpClient を使用しています。
JAVA を使用した http 通信の実装に関する詳細な記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。
