httpclient4.5提交请求通用方法

由于研究需要,需要频繁的访问,为了避免重复代码,写了个get和post通用方法。
/**
	 * this is a method for execute a get or post;if you want to execute a get
	 * method ,make the param list to be null;default timeout period is 6000ms.
	 * if you want to add some yourself headers,the third param is for u;else
	 * make it be null;
	 * 
	 * @author Mercy
	 */
	public static HttpResponse getResponse(String url, List<NameValuePair> list, Header[] headers) {
		RequestConfig config = RequestConfig.custom().setConnectTimeout(6000).setSocketTimeout(6000)
				.setCookieSpec(CookieSpecs.STANDARD_STRICT).build();
		// use the method setCookieSpec to make the header which named
		// set-cookie effect
		HttpResponse response = null;
		HttpUriRequest request = null;
		if (list == null) {
			HttpGet get = new HttpGet(url);
			get.setConfig(config);
			request = get;
		} else {
			HttpPost post = new HttpPost(url);
			post.setConfig(config);
			HttpEntity entity = null;
			try {
				entity = new UrlEncodedFormEntity(list, "utf-8");
				post.setEntity(entity);// 此处有个低级错误,谨记!
				request = post;
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		request.setHeader("User-Agent",
				"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36");
		request.setHeader("Connection", "keep-alive");
		request.setHeaders(headers);
		try {
			System.out.println("ready to link " + url);
			response = client.execute(request);
			System.out.println("status code is " + response.getStatusLine().getStatusCode());
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return response;
	}

猜你喜欢

转载自mercymessi.iteye.com/blog/2248645