java发送httpPost请求

最近调用外部厂商提供的Post接口,总结了几种方法:

一、项目的maven依赖:

		
			org.apache.httpcomponents
			httpcore
			4.4.5
		
		
			org.apache.httpcomponents
			httpclient
			4.5.6
		
		
			org.apache.httpcomponents
			httpmime
			4.5.2
		
		
		
			com.google.guava
			guava
			27.0.1-jre
		
		
		
			org.slf4j
			slf4j-api
			1.7.25
		
		
			com.alibaba
			fastjson
			1.2.28
		

二.post请求代码:

1.含上传图片(非JSON):

	public static String requestOCRForHttp(String url, Map requestParams, String filePathAndName)
			throws Exception {
		String result = null;
		CloseableHttpClient httpClient = HttpClients.createDefault();
		/** HttpPost */
		HttpPost httpPost = new HttpPost(url);
		MultipartEntity reqEntity = new MultipartEntity(); // 建立多文件实例
		FileBody filebody = new FileBody(new File(filePathAndName));
		reqEntity.addPart("pic", filebody);// upload为请求后台的File upload;
		for (String key : requestParams.keySet()) {
			String value = requestParams.get(key);
			reqEntity.addPart(key, new StringBody(value, Charset.forName("utf-8")));
		}
		httpPost.setEntity(reqEntity); // 设置实体
		/** HttpResponse */
		CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
		try {
			HttpEntity httpEntity = httpResponse.getEntity();
			result = EntityUtils.toString(httpEntity, "utf-8");
			EntityUtils.consume(httpEntity);
		} finally {
			try {
				if (httpResponse != null) {
					httpResponse.close();
				}
			} catch (IOException e) {
				logger.info("## release resouce error ##" + e);
			}
		}
		return result;
	}

2.post的String参数(非JSON)

	public static String requestOCRForHttp(String url, Map requestParams) throws Exception {
		String result = null;
		CloseableHttpClient httpClient = HttpClients.createDefault();
		/** HttpPost */
		HttpPost httpPost = new HttpPost(url);
		List params = new ArrayList();
		Iterator> it = requestParams.entrySet().iterator();
//		System.out.println(params.toString());
		while (it.hasNext()) {
			Entry en = it.next();
			String key = en.getKey();
			String value = en.getValue();
			if (value != null) {
				params.add(new BasicNameValuePair(key, value));
			}
		}
		httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
		/** HttpResponse */
		CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
		try {
			HttpEntity httpEntity = httpResponse.getEntity();
			result = EntityUtils.toString(httpEntity, "utf-8");
			EntityUtils.consume(httpEntity);
		} finally {
			try {
				if (httpResponse != null) {
					httpResponse.close();
				}
			} catch (IOException e) {
				logger.info("## release resouce error ##" + e);
			}
		}
		return result;
	}

3.POST请求(JSON):

	public static String sendHttpPost(String url, String JSONBody) throws Exception {
		CloseableHttpClient httpClient = HttpClients.createDefault();
		HttpPost httpPost = new HttpPost(url);
		httpPost.addHeader("Content-Type", "application/json");
		httpPost.setEntity(new StringEntity(JSONBody));
		CloseableHttpResponse response = httpClient.execute(httpPost);
//		System.out.println(response.getStatusLine().getStatusCode() + "\n");
		HttpEntity entity = response.getEntity();
		String responseContent = EntityUtils.toString(entity, "UTF-8"); 
//		System.out.println(responseContent);
		response.close();
		httpClient.close();
		return responseContent;
	}

你可能感兴趣的:(发送httpPost请求,java)