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请求实例的更多相关文章

  1. Flex通信-与Java实现Socket通信实例

    Flex通信-与Java实现Socket通信实例  转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...

  2. java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  3. java HttpClient POST请求

    一个简单的HttpClient POST 请求实例 package com.httpclientget; import java.awt.List; import java.util.ArrayLis ...

  4. 【转载】java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  5. java实现HTTP请求 HttpUtil

    示例: package com.sensor.utils; import java.net.HttpURLConnection; import java.net.URL; public class H ...

  6. HTTP:Java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种: 一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,H ...

  7. Java发送Http请求并获取状态码

    通过Java发送url请求,查看该url是否有效,这时我们可以通过获取状态码来判断. try { URL u = new URL("http://10.1.2.8:8080/fqz/page ...

  8. java 实现https请求

    java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从 ...

  9. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

随机推荐

  1. 确定有穷自动机(DFA)的化简(最小化)

    参考博客地址:https://blog.csdn.net/qq_33605778/article/details/80105658

  2. xueping wang 记录

    https://www.bbsmax.com/A/lk5aVBod1O/ https://pkgs.org/statistics/ 在firefox的调试控制台, 下面有一个独立的分割的控制台窗口, ...

  3. 2019-4-21 - plan

    设计模式 idea中demo 在test1中使用单例测试ok

  4. 容器中的诊断与分析3——live diagnosis——lldb

    windows下,我们对于.net程序发生Crash,资源泄露,死锁等问题的分析,有神器windbg .net core程序运行在linux上时,该怎么进行对对Core Dump文件进行分析呢?今天介 ...

  5. 题解 CF934A 【A Compatible Pair】 ——贪心

    题意: 给定两个数列 \(A\) . \(B\) ,元素个数分别为 \(n\) , \(m\) \((2 \le n,m \le 50)\) .数列中所有元素大小均在 \(-10^{9}\) 到 \( ...

  6. Unity外包团队:关于手机unity游戏开发的技术选型

    技术选型 Unity引擎内置了多人联机的解决方案,涵盖了从最底层的网络数据传输,到不同玩家之间的消息发送,再到游戏大厅这样的高级功能.考虑到Unity官方提供的云服务(Internet Service ...

  7. 补充资料——自己实现极大似然估计(最大似然估计)MLE

    这篇文章给了我一个启发,我们可以自己用已知分布的密度函数进行组合,然后构建一个新的密度函数啦,然后用极大似然估计MLE进行估计. 代码和结果演示 代码: #取出MASS包这中的数据 data(geys ...

  8. Apache Hadoop学习笔记一

    官网:http://hadoop.apache.org/ 1 什么是Hadoop? Apache™Hadoop®项目开发了用于可靠,可扩展的分布式计算的开源软件. Apache Hadoop软件库是一 ...

  9. English trip V2 - 3. A Healthy Diet Teacher:Corrine Key:各种前缀 im- un- in- re- over- under-

    In this lesson you will learn to talk about foot and drink for a healthy diet. 课上内容(Lesson) What do ...

  10. requests库爬取猫眼电影“最受期待榜”榜单 --网络爬虫

    目标站点:https://maoyan.com/board/6 # coding:utf8 import requests, re, json from requests.exceptions imp ...