日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

带有HttpClient的自定义HTTP标头

發布時間:2023/12/3 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 带有HttpClient的自定义HTTP标头 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Apache HTTPClient請求中設置自定義HTTP標頭的快速指南。 在HttpRequest上,調用setHeader()方法以將HttpHeaders內容類型設置為JSON。 適用于各種版本的HttpClient(4.3之前和之后)。

1.簡介

在本教程中,您將立即學習如何將自定義HTTP標頭設置為HTTPClient Request 。 如果您想學習和更深入,請轉到此處的 Apache HTTPClient教程部分。

本文中的所有示例,我們將使用域“ http://www.google.com”創建請求。 因為它被視為始終運行。

有時在面試中,會詢問“ 如何使用RequestBuilder發送POST參數 ?”。

2.根據要求設置標題– 4.3及更高版本

HttpClient 4.3引入了一種新的構建請求的方式
RequestBuilder 。 RequestBuilder.get()方法返回請求。 要在HttpRequest上設置標頭,我們將在構建器上使用setHeader()方法。

以下示例將標題設置如下。

package com.java.w3schools.blog.HttpClient;import java.io.IOException;import org.apache.http.HttpHeaders; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.impl.client.HttpClients;public class HttpHeaderSetHeaderExample {private static String URI = "http://www.google.com";public static void main(String[] args) throws ClientProtocolException, IOException {HttpClient client = HttpClients.custom().build();HttpUriRequest request = RequestBuilder.get().setUri(URI).setHeader(HttpHeaders.CONTENT_TYPE, "application/json").build();client.execute(request);System.out.println("Getting the header info from request");System.out.println("request header propery name : " + request.getAllHeaders()[0].getName());System.out.println("request header propery value : " + request.getAllHeaders()[0].getValue());}}

輸出:

Getting the header info from request request header propery name : Content-Type request header propery value : application/json

3.根據要求設置標題-4.3之前

它與版本4.3完全不同。 在舊版本中,您需要使用HttpGet類創建請求。 HttpGet的對象被視為請求對象。 在HttpGet上,我們將調用setHeader()方法。 最后,在HttpClient上調用execute()方法。

在下面的示例中,我們將許多屬性設置為標頭的一部分。

package com.java.w3schools.blog.HttpClient;import java.io.IOException;import org.apache.http.Header; import org.apache.http.HttpHeaders; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient;public class HttpHeaderSetHeaderExample4_3Before {private static String URI = "http://www.google.com";public static void main(String[] args) throws ClientProtocolException, IOException {HttpClient client = new DefaultHttpClient();HttpGet request = new HttpGet(URI);request.setHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");request.setHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-US,en;q=0.5");request.setHeader(HttpHeaders.ACCEPT, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");request.setHeader(HttpHeaders.CONNECTION, "keep-alive");request.setHeader(HttpHeaders.CACHE_CONTROL, "max-age=0");request.setHeader(HttpHeaders.USER_AGENT,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0");request.setHeader(HttpHeaders.HOST, "http://www.google.com");client.execute(request);System.out.println("Getting the header info from request before HttpClient 4.3 version.");Header[] headers = request.getAllHeaders();for (Header header : headers) {System.out.println("request header propery : " + header.getName() + " Value : " + header.getValue());}}}

輸出:

Getting the header info from request before HttpClient 4.3 version. request header propery : Accept-Encoding Value : gzip, deflate, br request header propery : Accept-Language Value : en-US,en;q=0.5 request header propery : Accept Value : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 request header propery : Connection Value : keep-alive request header propery : Cache-Control Value : max-age=0 request header propery : User-Agent Value : Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0 request header propery : Host Value : http://www.google.com

4.在客戶端上設置默認頭

有一個選項可以一次為所有請求設置通用標頭。 在這種方法中,設置標頭信息僅完成一次。

除了在每個請求上設置標頭信息之外,我們還可以將其配置為客戶端本身的默認標頭。

創建HTTPClient時,調用setDefaultHeaders()方法,該方法采用Header列表并將其設置為每個請求。

當標頭對于所有請求都必須相同時(例如自定義應用程序標頭),這非常有用。

package com.java.w3schools.blog.HttpClient;import java.io.IOException; import java.util.Arrays; import java.util.List;import org.apache.http.Header; import org.apache.http.HttpHeaders; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.methods.RequestBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicHeader; import org.apache.http.params.HttpParams;public class HttpHeaderSetHeaderExample4_3Before {private static String URI = "http://www.google.com";public static void main(String[] args) throws ClientProtocolException, IOException {Header header1 = new BasicHeader(HttpHeaders.CONTENT_TYPE, "application/json");Header header2 = new BasicHeader(HttpHeaders.ACCEPT_ENCODING, "gzip, deflate, br");Header header3 = new BasicHeader(HttpHeaders.ACCEPT_LANGUAGE, "en-US,en;q=0.5");Header header4 = new BasicHeader(HttpHeaders.ACCEPT,"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");Header header5 = new BasicHeader(HttpHeaders.CONNECTION, "keep-alive");Header header6 = new BasicHeader(HttpHeaders.CACHE_CONTROL, "max-age=0");Header header7 = new BasicHeader(HttpHeaders.USER_AGENT,"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0");Header header8 = new BasicHeader(HttpHeaders.HOST, "http://www.google.com");List<Header> headers = Arrays.asList(header1, header2, header3, header4, header5, header6, header7, header8);HttpClient client = HttpClients.custom().setDefaultHeaders(headers).build();HttpUriRequest request = RequestBuilder.get().setUri(URI).build();client.execute(request);}}

如果您想在請求中添加其他標題,則可以使用
針對特定請求的setHeader()方法。

5.例外

如果您嘗試訪問任何不受支持的操作,例如client.getParams()。

HttpParams allHeaders = client.getParams();

上面的代碼產生以下錯誤。

Exception in thread "main" java.lang.UnsupportedOperationExceptionat org.apache.http.impl.client.InternalHttpClient.getParams(InternalHttpClient.java:211)at com.java.w3schools.blog.HttpClient.HttpHeaderSetHeaderExample4_3Before.main(HttpHeaderSetHeaderExample4_3Before.java:40)

六,結論

在本文中,我們已經了解了如何將自定義標頭信息設置為HTTP請求。

用于在4.3及更高版本中的每個請求上設置HTTP標頭的示例程序。 并且還將默認設置為客戶端中的所有請求。

顯示的示例可通過GitHub獲得

GitHub代碼

引用請求標頭

翻譯自: https://www.javacodegeeks.com/2020/04/custom-http-header-with-the-httpclient.html

總結

以上是生活随笔為你收集整理的带有HttpClient的自定义HTTP标头的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。