前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java发送HTTP 请求

Java发送HTTP 请求

作者头像
胖虎
发布2019-06-26 17:10:50
2.3K0
发布2019-06-26 17:10:50
举报
文章被收录于专栏:晏霖晏霖

前言

请求http的Demo是个人亲测过,目前该方式已经在线上运行着。因为是http请求,所有发送post 和get 请求的demo都有在下方贴出,包括怎么测试,大家可直接 copy到自己的项目中使用。

正文

使用须知

为了避免大家引错包我把依赖和涉及到包路径给大家

代码语言:javascript
复制
import java.net.HttpURLConnection;
import java.net.URI;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
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.util.EntityUtils;


import com.fasterxml.jackson.databind.ObjectMapper;<dependency>
代码语言:javascript
复制
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpcore</artifactId>
	<version>4.4.8</version>
</dependency>
<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpclient</artifactId>
	<version>4.5.3</version>
</dependency>

HTTP 发送 get 请求

首先我们引入两个包

发送get请求的工具类,可直接 copy 使用即可

另外,我抛出异常的代码大家改成自己业务的异常,不需要就删除掉。

参数说明:

host:ip

servUri:url

reString:参数

代码语言:javascript
复制
public static String getHttpData(String host, String servUri, String reString) throws Exception {
	StringBuffer sb = new StringBuffer();
	sb.append("getHttpData:host:" + host + ",servUri:" + servUri + ",reString:" + reString);	String strResp = null;
	try {
	URI uri = new URIBuilder().setScheme("http").setHost(host).setPath(servUri)
		.setParameter("strInfo", reString).build();
		HttpGet httpGet = new HttpGet(uri);
		CloseableHttpClient client3 = HttpClients.createDefault();
		HttpResponse resp;
		resp = client3.execute(httpGet);
		if (resp.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {
		strResp = EntityUtils.toString(resp.getEntity());
		logger.info("the return result:{}", strResp);
		} else {
		logger.info("Error Response:", resp.getStatusLine().toString());
		throw new CommonBusinessException(CommonConstants.TASK_RELEASE_WCF,
				CommonConstants.TASK_RELEASE_WCF_DESC);
		}
		} catch (Exception e) {
		logger.error(sb.toString() + ":" + e.getMessage(), e.getCause());
		throw new CommonBusinessException(CommonConstants.TASK_RELEASE_WCF, CommonConstants.TASK_RELEASE_WCF_DESC);
		}
		return strResp;
	}

HTTP 发送 post 请求

发送post分两种,我分两种的原因是为了让大家方便,想传对象和 json 可以直接复制过用就可以用,不用你们在转了。

第一种是直接接收json

参数明说:

url:url

json:参数

代码语言:javascript
复制
public static String doPostData(String url, String json) throws Exception {
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
String result = "";
HttpResponse res = null;
try {
	StringEntity s = new StringEntity(json.toString(), "UTF-8");
	s.setContentType("application/json");
	post.setHeader("Accept", "application/json");
	post.setHeader("Content-type", "application/json; charset=utf-8");
	post.setEntity(s);
	res = client.execute(post);
	if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
		result = EntityUtils.toString(res.getEntity());
		return HttpStatus.SC_OK + "";
	}
	} catch (Exception e) {
	if(res == null) {
		return "HttpResponse 为 null!";
		}
		throw new RuntimeException(e);
	}
	if(res == null || res.getStatusLine() == null) {
		return "无响应";
	}
	return res.getStatusLine().getStatusCode() + "";
}
测试
代码语言:javascript
复制
@Test
    public void test12() throws Exception {
        String HOST = "http://eipwcf.aspirecn.com/SvcEF/Service1.svc/WCF_EF_MSA_GetDataInfo_P";
        HttpClient client = new HttpClient();
        JSONObject json = new JSONObject();
        json.put("msgId", msgId);
        String reslut=client.doPostData(HOST, json);
    }

第二种是参数是对象

参数说明:

url:url

tram:对象

代码语言:javascript
复制
public static String doHttpPostData(String url, TaskReleaseApprovalModel tram)
			throws Exception {
	StringBuffer sb = new StringBuffer();
	sb.append("doHttpPostData:url:" + url + ",tram:" + tram.toString() + ",contentType:" + contentType);	logger.info(sb.toString());
	String tmpString = "";
	HttpPost request = new HttpPost(url);
	request.setHeader("Accept", "application/json");
	request.setHeader("Content-type", "application/json");
	ObjectMapper mapper = new ObjectMapper();
	String jsonString;
	try {
	jsonString = mapper.writeValueAsString(tram);
	StringEntity entity = new StringEntity(jsonString, "UTF-8");
	request.setEntity(entity);
	CloseableHttpClient client = HttpClients.createDefault();
	HttpResponse response = client.execute(request);
if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {
		tmpString = EntityUtils.toString(response.getEntity());
		logger.info("the post result:tmpString:{}", tmpString);
	} else {
		logger.info("the post failure:tmpString:", tmpString);
		throw new CommonBusinessException(CommonConstants.TASK_RELEASE_WCF,
				CommonConstants.TASK_RELEASE_WCF_DESC);
	}
} catch (Exception e) {
	logger.error(sb.toString() + ":" + e.getMessage(), e.getCause());
throw new CommonBusinessException(CommonConstants.TASK_RELEASE_POSTWCF,
			CommonConstants.TASK_RELEASE_POSTWCF_DESC);
}
	return tmpString;}

这个方法我想不用写测试类大家也会用,传过去对象和地址就可以了,很方便很简单。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 晏霖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • HTTP 发送 get 请求
      • HTTP 发送 post 请求
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档