httpclient 簡單介紹使用方法
阿新 • • 發佈:2019-01-10
客戶端使用HttpClient傳送請求。
1. 建立HttpClient。
2. 建立請求例項,指定URL。傳送GET請求,建立HttpGet物件;傳送POST請求,建立HttpPost物件。
3. 傳遞請求引數,可呼叫HttpGet、HttpPost共同的setParams(HetpParams params)方法新增請求引數;對於HttpPost,也可呼叫setEntity(HttpEntity entity)方法來設定請求引數。
4. 呼叫HttpClient物件的execute(HttpUriRequest request)傳送請求,返回一個HttpResponse。
5. 呼叫HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取伺服器的響應頭;呼叫HttpResponse的getEntity()方法可獲取HttpEntity物件,該物件包裝了伺服器返回的資訊。
6. 釋放連線。
客戶端程式碼
public static void main(String[] args) { HttpClient http=new HttpClient(); Map<String,String> params=new HashMap<String, String>(); params.put("dateUpdateFlag","1"); params.put("dateUpdateV","2"); params.put("serversRunFlag","3"); http.sendMsg("http://127.0.0.1:8008/updataclient/Service", params); } public String sendMsg(String url,Map<String,String> params){ CloseableHttpClient httpClient=HttpClients.createDefault(); //httpClient.e HttpPost post=new HttpPost(url); List<NameValuePair> formparams = new ArrayList<NameValuePair>(); for (String nameValuePair : params.keySet()) { formparams.add(new BasicNameValuePair(nameValuePair, params.get(nameValuePair))); } UrlEncodedFormEntity uefEntity=null; CloseableHttpResponse response=null; try { uefEntity=new UrlEncodedFormEntity(formparams,"utf-8"); post.setEntity(uefEntity); response=httpClient.execute(post); HttpEntity entity =response.getEntity(); System.out.println(EntityUtils.toString(entity, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(response!=null) response.close(); if(httpClient!=null) httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }
伺服器端程式碼
public class Services extends HttpServlet { public static Logger logger = Logger.getLogger(Services.class); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); } public static int serversRunFlag=0; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String dateUpdateFlag=(String) req.getAttribute("dateUpdateFlag"); System.out.println(req.getParameter("dateUpdateFlag")); String dateUpdateV=(String)req.getAttribute("dateUpdateV"); System.out.println(req.getParameter("dateUpdateV")); String serversRunFlag=(String)req.getAttribute("serversRunFlag"); System.out.println(req.getParameter("serversRunFlag"); printToJson("設定成功!", resp); } /** * */ protected void printToJson(String jsonStr, HttpServletResponse response) { response.setCharacterEncoding("UTF-8"); response.setContentType("text/json"); response.setDateHeader("Expires", 0); PrintWriter out = null; try { out = response.getWriter(); out.println(jsonStr); } catch (IOException e) { //e.printStackTrace(); }finally { if (null != out) { out.flush(); out.close(); } }} }
執行客戶端main方法結果:
客戶端執行結果輸出:
設定成功!
伺服器端執行結果輸出:
1
2
3