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)微信服务器接收到用户的消息处理之后,通过开发者 ...
随机推荐
- continue #结束本次循环,继续下一次代码
for i in range(10): if i <5: continue print(i) for j in range(10): pr ...
- Java 问题定位工具 ——jstack
简介 jstack 主要用于生成虚拟机当前时刻的「线程快照」.线程快照是当前 Java 虚拟机每一条线程正在执行的方法堆栈的集合. 生成线程快照的主要目的是用于定位线程出现长时间停顿的原因,如线程间死 ...
- js函数式编程curry与compose实现
//自行实现以下curry函数和compose //curry function curry(fn) { return function aa (...arg) { if (arg.length &g ...
- VFIO PF SRIOV IOMMU UIO概念解释、关联
1.UIO出现的原因 第一,硬件设备可以根据功能分为网络设备,块设备,字符设备,或者根据与CPU相连的方式分为PCI设备,USB设备等.它们被不同的内核子系统支持.这些标准的设备的驱动编写较为容易而且 ...
- 【Python】函数总结
以下为自学笔记内容,仅供参考. 转发请保留原文链接https://www.cnblogs.com/it-dennis/p/10516688.html python中的函数 最近看了python中关于函 ...
- cuda cudnn tensorflow-gpu安装
Ububtu18.04下载cuda9.0 下载好后得到: CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,需要安装gcc-6与g++-6 查看当前版本 ...
- vue页面优化中的v-show和v-if使用比较
在页面中使用了v-if做了一个tab框,点击不同的tab框,并加载不同的内容,由于各tab框对应的内容是4到5张统计图,加载的数据量比较大,发现后台请求响应返回的时间很快,在100ms以内,但点击ta ...
- 使用bootstrap-select有时显示“Nothing selected”
.html()后加 $('#courseList').selectpicker('refresh'); $('#courseList').selectpicker('render'); 来源
- vue--vant组件库field输入框
安装vant UI框架: cnpm install vant –-save-dev 导入组件-在main.js里: import Vant from 'vant'; import'vant/lib/v ...
- js 整理
类型 1.js 中的数据类型,解释清楚原始数据类型和引用数据类型 js中共有null, underfined, string, number, boolean, object 六种数据类型 原始数据类 ...