java的http请求实例
package vqmp.data.pull.vqmpull.common.utils; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import vqmp.data.pull.vqmpull.common.enums.ResultEnum;
import vqmp.data.pull.vqmpull.common.exception.VQMPException; import java.util.List; /**
* @author 01372231
* @
* @date 2019/3/4 15:14
*/
public class RequestUtil {
private static final Logger logger = LoggerFactory.getLogger(RequestUtil.class); private RequestUtil() {
throw new IllegalAccessError("Instantiate me is forbid");
} /**
*
*
* @return 返回cookie值
* @throws Exception 获取token失败
*/
public static List<String> getItobToken(String itobTokenUrl) { LinkedMultiValueMap<String, String> body = new LinkedMultiValueMap();
body.add("userRole", "VIP");
body.add("centerName", "SF"); ResponseEntity request = requestEntity(itobTokenUrl, HttpMethod.POST, body, new HttpHeaders());
HttpHeaders headers = request.getHeaders();
List<String> strings = headers.get("Set-Cookie");
if (null == strings) {
logger.error("url{}-获取token失败", itobTokenUrl);
throw new VQMPException(ResultEnum.FAIL.getCode(), "获取token失败");
} //获取jira数据
return strings;
} public static ResponseEntity requestEntity(String url, HttpMethod method, MultiValueMap<String, String> body, HttpHeaders headers) {
logger.info("发送请求地址url:{}", url);
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(10000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
if (method.equals(HttpMethod.POST)) {
headers.set("Content-Type", "application/x-www-form-urlencoded");
}
HttpEntity entity = null;
if (null != body) {
entity = new HttpEntity(body, headers);
} else {
entity = new HttpEntity(headers); }
ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, entity, String.class);
if (responseEntity.getStatusCode() == HttpStatus.REQUEST_TIMEOUT) {
logger.error("接口请求超时,接口地址: {}", url);
throw new VQMPException("接口" + url + "请求超时");
} return responseEntity; } /**
* get response body
*
* @param url request url
* @param method reuqest method
* @param body request params
* @param headers request headers
* @return
* @throws Exception
*/
public static String request(String url, HttpMethod method, MultiValueMap<String, Object> body, HttpHeaders headers) {
logger.info("发送请求地址url:{}", url);
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(10000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
headers.set("Content-Type", "application/x-www-form-urlencoded");
HttpEntity entity = new HttpEntity(body, headers); ResponseEntity<String> responseEntity = restTemplate.exchange(url, method, entity, String.class);
if (responseEntity.getStatusCode() == HttpStatus.REQUEST_TIMEOUT) {
logger.error("接口请求超时,接口地址: {}", url);
throw new VQMPException("接口" + url + "请求超时");
}
if (responseEntity.getStatusCode().value() != 200) {
throw new VQMPException(String.format("tcmp响应报错 : {} ", responseEntity.toString()));
} return responseEntity.getBody(); } }
package com.sf.tcmp.util; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import java.io.*;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.URL; /**
*
* @author 01368324
*
*/
public final class RequestAPIUtil { private static final Logger logger = LoggerFactory.getLogger(RequestAPIUtil.class); private static final String LOGSTRING = "接口地址:{},接口名:{}"; private RequestAPIUtil(){
throw new IllegalAccessError("Instantiate me is forbid");
} /**
* Jira 的webService接口请求
* @param urlStr 请求url
* @param apiName 接口名
* @param arg 参数
* @return
*/
public static String postRequest(String urlStr,String apiName,String arg){
String result = "";
try {
URL url = new URL(urlStr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setConnectTimeout(10000);
con.setRequestProperty("Content-Type", "application/xml;");
OutputStream oStream = con.getOutputStream();
String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
"<soapenv:Envelope "+
"xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "+
"xmlns:gs=\"http://server.itms.inf.itdd.sf.com/\">"+
" <soapenv:Header/>"+
" <soapenv:Body>"; soap = soap+" <gs:"+apiName+">";
soap=soap+" <arg0>" + arg + "</arg0>"; soap = soap+" </gs:"+apiName+">";
soap = soap+" </soap:Body>"+
"</soapenv:Envelope>";
oStream.write(soap.getBytes());
oStream.close();
InputStream iStream = con.getInputStream();
Reader reader = new InputStreamReader(iStream,"utf-8"); int tempChar;
String str = new String("");
while((tempChar = reader.read()) != -1){
str += Character.toString ((char)tempChar);
}
//下面这行输出返回的xml到控制台,相关的解析操作大家自己动手喽。
//如果想要简单的话,也可以用正则表达式取结果出来。
result = str.substring(str.indexOf("<return>")+8, str.indexOf("</return>"));
iStream.close();
oStream.close();
con.disconnect();
} catch (ConnectException e){
logger.error(LOGSTRING,urlStr,apiName,e);
}catch (IOException e) {
logger.error(LOGSTRING,urlStr,apiName,e);
} catch (Exception e){
logger.error(LOGSTRING,urlStr,apiName,e);
}
return result;
}
/**
* webservice接口请求demo
* @return
*/
public static String requestDemo(){
String result = "";
try {
//http://10.202.6.70:6060/itdd-app/inf-ws/SyncITMSData
String urlStr = "";
URL url = new URL(urlStr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
OutputStream oStream = con.getOutputStream();
//下面这行代码是用字符串拼出要发送的xml,xml的内容是从测试软件里拷贝出来的
//需要注意的是,有些空格不要弄丢哦,要不然会报500错误的。
//参数什么的,你可以封装一下方法,自动生成对应的xml脚本
String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
"<soapenv:Envelope "+
"xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" "+
"xmlns:gs=\"http://server.itms.inf.itdd.sf.com/\">"+
" <soapenv:Header/>"+
" <soapenv:Body>"+
" <gs:getVersionBySysCode>"+
" <arg0>" + "ESG-SDEIS-CORE" + "</arg0>"+
" </gs:getVersionBySysCode>"+
" </soap:Body>"+
"</soapenv:Envelope>";
oStream.write(soap.getBytes());
oStream.close();
InputStream iStream = con.getInputStream();
Reader reader = new InputStreamReader(iStream); int tempChar;
StringBuilder str = new StringBuilder();
while((tempChar = reader.read()) != -1){
str.append(Character.toString((char) tempChar));
}
//下面这行输出返回的xml到控制台,相关的解析操作大家自己动手喽。
//如果想要简单的话,也可以用正则表达式取结果出来。
result = str.substring(str.indexOf("<return>")+8, str.indexOf("</return>"));
iStream.close();
oStream.close();
con.disconnect();
} catch (Exception e) {
logger.error("content:",e);
}
return result;
}
}
java的http请求实例的更多相关文章
- Flex通信-与Java实现Socket通信实例
Flex通信-与Java实现Socket通信实例 转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...
- java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- java HttpClient POST请求
一个简单的HttpClient POST 请求实例 package com.httpclientget; import java.awt.List; import java.util.ArrayLis ...
- 【转载】java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- java实现HTTP请求 HttpUtil
示例: package com.sensor.utils; import java.net.HttpURLConnection; import java.net.URL; public class H ...
- HTTP:Java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种: 一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,H ...
- Java发送Http请求并获取状态码
通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...
- java 实现https请求
java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从 ...
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...
随机推荐
- snmp模拟器snmpsid使用
snmpsim使用 安装 pip install snmpsim 简单使用 生成snmpwalk文件: snmpwalk -v2c -c 'password' -ObentU 218.200.x.15 ...
- Python+MapReduce实现矩阵相乘
算法原理 map阶段 在map阶段,需要做的是进行数据准备.把来自矩阵A的元素aij,标识成p条<key, value>的形式,key="i,k",(其中k=1,2,. ...
- 小程序使用阿里巴巴TTF字体文件以及图标
转话地址https://transfonter.org 第一步:下载需要的字体图标 进入阿里图标官网http://iconfont.cn/搜索自己想要的图标,如这里需要一个购物车的图标,流程为: 搜索 ...
- Unity外包 UE4外包 项目案例平台开通通知
长年承接Unity外包 UE4外包,大家好,本公司团队已将案例上传至专门的案例官网. 欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.
- sql学习书籍
SQL 入门 在准备成为MySQL DBA之前,能熟练的编写SQL是一个必要条件.exists 和 join之间的等价转换:基本的行列转换:SQL 循环等的熟练掌握对之后的运维和调优工作都有很大的帮助 ...
- 接口测试工具postman
一. 安装 1. 免费官网链接:https://www.getpostman.com/postman,下载好后双击.exe程序安装即可 2. 注意事项:建议安装在非系统盘,即C盘以外的盘,路径最好用全 ...
- Unity --- 如何简单的判断图片是否含有 alpha channel
var texImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter; if (texImporter.DoesSourceT ...
- gcc使用及动静态库制作
一. GCC的使用 1. GCC的编译过程 (1)预处理(cpp)gcc -E(输出问价通常以 .i 结尾),将头文件展开,宏替换等操作: (2)编译器(gcc)gcc -S(输出问价以 .s 结尾) ...
- CSS清除浮动的一种简便的方法
在使用的浮动的元素的父元素添加该CSS样式 .clear{ overflow: auto; }
- Oracle使用
Oracle数据库首先必须在服务器端安装,安装完成后在DBCA中创建数据库,然后在Net Configuration Assistant中配置监听程序和本地Net服务名.然后安装本地Oracle客户端 ...