java使用httpclient封装post请求和get的请求
来源:互联网 发布:星际老男孩淘宝店 整机 编辑:程序博客网 时间:2024/05/17 01:20
在我们程序员生涯中,经常要复用代码,所以我们应该养成时常整理代码的好习惯,以下是我之前封装的httpclient的post和get请求所用的代码:
package com.marco.common;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.URI;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.StatusLine;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import org.apache.log4j.Logger;/** * @author 马弦 * @date 2017年10月23日 下午2:49 * HttpClient工具类 */public class HttpUtil {private static Logger logger = Logger.getLogger(HttpUtil.class);/** * get请求 * @return */public static String doGet(String url) { try { HttpClient client = new DefaultHttpClient(); //发送get请求 HttpGet request = new HttpGet(url); HttpResponse response = client.execute(request); /**请求发送成功,并得到响应**/ if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { /**读取服务器返回过来的json字符串数据**/ String strResult = EntityUtils.toString(response.getEntity()); return strResult; } } catch (IOException e) { e.printStackTrace(); } return null;}/** * post请求(用于key-value格式的参数) * @param url * @param params * @return */public static String doPost(String url, Map params){BufferedReader in = null; try { // 定义HttpClient HttpClient client = new DefaultHttpClient(); // 实例化HTTP方法 HttpPost request = new HttpPost(); request.setURI(new URI(url)); //设置参数 List<NameValuePair> nvps = new ArrayList<NameValuePair>(); for (Iterator iter = params.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String value = String.valueOf(params.get(name)); nvps.add(new BasicNameValuePair(name, value)); //System.out.println(name +"-"+value); } request.setEntity(new UrlEncodedFormEntity(nvps,HTTP.UTF_8)); HttpResponse response = client.execute(request); int code = response.getStatusLine().getStatusCode(); if(code == 200){//请求成功 in = new BufferedReader(new InputStreamReader(response.getEntity() .getContent(),"utf-8")); StringBuffer sb = new StringBuffer(""); String line = ""; String NL = System.getProperty("line.separator"); while ((line = in.readLine()) != null) { sb.append(line + NL); } in.close(); return sb.toString(); } else{// System.out.println("状态码:" + code); return null; } } catch(Exception e){ e.printStackTrace(); return null; }}/** * post请求(用于请求json格式的参数) * @param url * @param params * @return */public static String doPost(String url, String params) throws Exception {CloseableHttpClient httpclient = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);// 创建httpPost httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-Type", "application/json"); String charSet = "UTF-8"; StringEntity entity = new StringEntity(params, charSet); httpPost.setEntity(entity); CloseableHttpResponse response = null; try { response = httpclient.execute(httpPost); StatusLine status = response.getStatusLine(); int state = status.getStatusCode(); if (state == HttpStatus.SC_OK) { HttpEntity responseEntity = response.getEntity(); String jsonString = EntityUtils.toString(responseEntity); return jsonString; } else{ logger.error("请求返回:"+state+"("+url+")");} } finally { if (response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } } try {httpclient.close();} catch (IOException e) {e.printStackTrace();} } return null;}}
httpclient是一个非常常用的工具,在项目开发的时候,经常需要请求第三方的接口,我整理好了这段代码,以后回头找的时候就方便啦!
阅读全文
1 0
- java使用httpclient封装post请求和get的请求
- java使用httpclient模拟post请求和get请求示例
- Java使用HttpClient发送Get请求和Post请求
- Httpclient的Get请求和Post请求
- HttpClient的Get请求和Post请求
- Java使用HttpClient发送Get和Post请求
- 使用HttpClient进行get和post请求
- 使用HttpClient发送GET和POST请求
- java使用HttpClient模拟发送http的get、post请求
- 【Java】HttpURLConnection,HttpClient 的 Get,Post 请求
- httpclient的get和post请求
- HttpClient的get和post请求数据
- HttpClient 的post和get请求
- httpClient的Get和Post请求
- HttpClient的post和get请求
- httpclient的get和post请求
- HttpClient的GET和POST请求
- httpClient----Post 和 GET请求
- C 结构体对齐
- 【BZOJ4010】【HNOI2015】菜肴制作(拓扑排序)
- bzoj 2330 糖果
- jq ajax
- python解8皇后问题
- java使用httpclient封装post请求和get的请求
- 将本地项目托管到码云上
- 终于沉下心来做事了,五年内写程序不为钱(2017年10月-2022年10月)
- java杀进程
- vagrant 安装与配置
- [NOIP模拟][LCA]一样远
- codeforces 602 D. Lipshitz Sequence
- python里使用正则表达式的分组命名方式
- java 常用集合list与Set、Map区别及适用场景总结