在項目中,咱們經常遇到遠程調用的問題,一個模塊老是沒法單獨存在,總須要調用第三方或者其餘模塊的接口。這裏咱們就涉及到了遠程調用。 原來在 ITOO中,咱們是經過使用EJB來實現遠程調用的,改版以後,咱們用Dubbo+zk來實現。下面介紹一下HttpClient的實現方法。html
(一)簡介java
HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,而且它支持 HTTP 協議最新的版本和建議。能夠說是如今Internet上面最重要,使用最多的協議之一了,愈來愈多的java應用須要使用http協議來訪問網絡資源,特別是如今rest api的流行。apache
(二)使用編程
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient-cache</artifactId> <version>4.5</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> <version>4.3.2</version> </dependency>
(三)POST請求api
實現步驟:
第一步:建立一個httpClient對象
第二步:建立一個HttpPost對象。須要指定一個url
第三步:建立一個list模擬表單,list中每一個元素是一個NameValuePair對象
第四步:須要把表單包裝到Entity對象中。StringEntity
第五步:執行請求。
第六步:接收返回結果
第七步:關閉流網絡
@Test public void testHttpPost() throws Exception { // 第一步:建立一個httpClient對象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 第二步:建立一個HttpPost對象。須要指定一個url HttpPost post = new HttpPost("http://localhost:8082/posttest.html"); // 第三步:建立一個list模擬表單,list中每一個元素是一個NameValuePair對象 List<NameValuePair> formList = new ArrayList<>(); formList.add(new BasicNameValuePair("name", "張三")); formList.add(new BasicNameValuePair("pass", "1243")); // 第四步:須要把表單包裝到Entity對象中。StringEntity StringEntity entity = new UrlEncodedFormEntity(formList, "utf-8"); post.setEntity(entity); // 第五步:執行請求。 CloseableHttpResponse response = httpClient.execute(post); // 第六步:接收返回結果 HttpEntity httpEntity = response.getEntity(); String result = EntityUtils.toString(httpEntity); System.out.println(result); // 第七步:關閉流。 response.close(); httpClient.close(); }
(四)Get請求工具
實現步驟:
第一步:建立一個httpClient對象
第二步:建立一個HttpPost對象。須要指定一個url
第三步:建立一個list模擬表單,list中每一個元素是一個NameValuePair對象
第四步:須要把表單包裝到Entity對象中。StringEntity
第五步:執行請求。
第六步:接收返回結果
第七步:關閉流。post
@Test public void testHttpGet() throws Exception { // 第一步:把HttpClient使用的jar包添加到工程中。 // 第二步:建立一個HttpClient的測試類 // 第三步:建立測試方法。 // 第四步:建立一個HttpClient對象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 第五步:建立一個HttpGet對象,須要制定一個請求的url HttpGet get = new HttpGet("http://www.itheima.com"); // 第六步:執行請求。 CloseableHttpResponse response = httpClient.execute(get); // 第七步:接收返回結果。HttpEntity對象。 HttpEntity entity = response.getEntity(); // 第八步:取響應的內容。 String html = EntityUtils.toString(entity); System.out.println(html); // 第九步:關閉response、HttpClient。 response.close(); httpClient.close(); }
轉載至:https://blog.csdn.net/mengmei16/article/details/72190363?foxhandler=RssReadRenderProcessHandler測試