详解Java发送HTTP请求

 更新时间:2019年03月29日 16:27:49   作者:胖虎。。  
这篇文章主要介绍了Java发送HTTP请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

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

正文

使用须知

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

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>
			<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:参数

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:参数

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() + "";
	}
@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:对象

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;
	}

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

以上所述是小编给大家介绍的Java发送HTTP请求详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Java乱码问题解决方法_动力节点Java学院整理

    Java乱码问题解决方法_动力节点Java学院整理

    开发java应用出现乱码是很常见的,毕竟现在unicode的使用还不是很广泛,下面给大家分享Java乱码问题解决方法,感兴趣的朋友一起看看吧
    2017-07-07
  • 基于SpringBoot制作一个PDF切图小工具

    基于SpringBoot制作一个PDF切图小工具

    这篇文章主要为大家详细介绍了如何基于SpringBoot制作一个PDF切图小工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • Java正则表达式之全量匹配和部分匹配

    Java正则表达式之全量匹配和部分匹配

    正则表达式异常强大,一直理解不深,用的也不深,这次项目中尝试,体会到了它的强大之处,这篇文章主要给大家介绍了关于Java正则表达式之全量匹配和部分匹配的相关资料,需要的朋友可以参考下
    2023-06-06
  • idea搭建SSM框架遇踩的坑(附完整过程)

    idea搭建SSM框架遇踩的坑(附完整过程)

    最近准备搭建一个SSM框架,由于很久没有搭建了,一来就遇到各种问题,折腾了一天终于搞定了,特此记录一下遇到的问题,下面这篇文章主要给大家介绍了关于idea搭建SSM框架遇踩的坑,文中还附完整过程,需要的朋友可以参考下
    2023-04-04
  • 关于springboot集成swagger及knife4j的增强问题

    关于springboot集成swagger及knife4j的增强问题

    这篇文章主要介绍了springboot集成swagger以及knife4j的增强,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 详解SpringMVC中的异常处理

    详解SpringMVC中的异常处理

    这篇文章主要介绍了SpringMVC中的异常处理的相关资料,帮助大家更好的理解和学习使用SpringMVC,感兴趣的朋友可以了解下
    2021-03-03
  • 详解JAVA 反射机制

    详解JAVA 反射机制

    这篇文章主要介绍了JAVA 反射机制的相关知识,文中讲解的非常细致,代码帮助大家更好的理解学习,感兴趣的朋友可以了解下
    2020-06-06
  • Spring Security拦截器引起Java CORS跨域失败的问题及解决

    Spring Security拦截器引起Java CORS跨域失败的问题及解决

    这篇文章主要介绍了Spring Security拦截器引起Java CORS跨域失败的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • JdbcTemplate方法介绍与增删改查操作实现

    JdbcTemplate方法介绍与增删改查操作实现

    这篇文章主要给大家介绍了关于JdbcTemplate方法与增删改查操作实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用JdbcTemplate具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • Java实现大文件的切割与合并操作示例

    Java实现大文件的切割与合并操作示例

    这篇文章主要介绍了Java实现大文件的切割与合并操作,结合实例形式分析了java基于io及util操作大文件按指定个数分割与合并相关操作技巧,需要的朋友可以参考下
    2018-07-07

最新评论