http请求及模拟浏览器发送http请求
/**
*测试新增图片
* @throws IOException
* @throws HttpException
* @throws SAXException
* @throws ParserConfigurationException
*/
// @Test
// public void TestUploadImage() throws HttpException, IOException, SAXException, ParserConfigurationException{
// System. out.println("----------");
// System.out.println("----------");
// HttpClient client = new HttpClient();
// PostMethod method = new PostMethod("http://localhost:8080/egis-scms-core/order/fileUpLoad.do");
// File file = new File("D:/a.jpg");
/ / FilePart fp = new FilePart("files", file);
// StringPart barcode = new StringPart("id", "GP1101MR3401S100277736");
// StringPart picCode = new StringPart("picCode", "GP17");
// Part[] parts = {id,picCode,fp};
// MultipartRequestEntity mre = new MultipartRequestEntity(parts,method.getParams());
// method.setRequestEntity(mre);
// int httpStat = client.executeMethod(method) ;
//
// if (httpStat != 200) {
// //如果失败,获取返回XML信息
// String xml = method.getResponseBodyAsString();
// DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// DocumentBuilder builder = factory.newDocumentBuilder();
// StringReader stringReader = new StringReader(xml);
// InputSource inputSource = new InputSource(stringReader);
// Document doc = builder.parse(inputSource);
// doc.normalize();
/ / NodeList resultNL = doc.getElementsByTagName("desciption");
// String fromAgentResult = resultNL.item(0).getFirstChild().getNodeValue();
// }
// }
//开始调用服务
Map result = null;
try {
result = (Map) HttpProxy.send(scmsCoreUrl+UrlConstants.pubOrderInsuranceListUrl, params, Map.class);
} catch (IOException e) {
LoggerUtil.logError(this.getClass() .getName(), "orderList", e);
throw new BusinessException(e);
}
工具类:
public class HttpProxy {
public static Object send(String url,SettingModel setting,Map<String,String> parameter,Class<?> resultClazz){
Object result = null;
LoggerUtil.trace(HttpProxy.class.getName(), "数据接收类:" , resultClazz==null?null:resultClazz.getName()+"请求地址: " + url + "请求参数: " + parameter );
try {
SSLContextBuilder builder = new SSLContextBuilder();
builder.loadTrustMaterial(null, new TrustSelfSignedStrategy() );
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
builder.build());
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(
sslsf).build();
SSLSocketFactory.getSocketFactory().setHostnameVerifier(new AllowAllHostnameVerifier());
HttpUriRequest method = HttpMethodUtil.createMethod(url,setting,parameter,null);
HttpResponse resp = httpclient.execute(method);
String resultBody = EntityUtils.toString(resp.getEntity(), HTTP.UTF_8);
int status = resp.getStatusLine(). getStatusCode();
LoggerUtil.trace(HttpProxy.class.getName(), "返回状态:" + status,"返回值:" + resultBody);
if(resultClazz == null || resultClazz.equals(String.class)) {
result = resultBody;
}else{
Resolve resolve = ResolveFactory.createResolve(setting.getDataType());
result = resolve.resolve(resultBody, resultClazz);
}
}catch(Exception e){
LoggerUtil.logError(HttpProxy.class.getName (), resultClazz==null?"":resultClazz.getName() +"请求地址: " + url + "请求参数: " + parameter ,e );
}
return result;
}
public static Object send(String url, String data, SettingModel setting, Class<?> resultClazz) throws BusinessException {
Object result = null;
LoggerUtil.trace(HttpProxy.class.getName(), "数据接收类:" ,"请求地址: " + url + "请求参数: " + data);
try {
SSLContextBuilder builder = new SSLContextBuilder();
builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
builder.build());
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(
sslsf).build();
SSLSocketFactory.getSocketFactory().setHostnameVerifier(new AllowAllHostnameVerifier());
HttpUriRequest method = HttpMethodUtil.createMethod(url,setting,data,null);
HttpResponse resp = httpclient.execute(method);
String resultBody = EntityUtils.toString(resp.getEntity(), HTTP.UTF_8);
int status = resp.getStatusLine().getStatusCode();
LoggerUtil.trace(HttpProxy.class.getName(), "返回状态:" + status,"返回值:" + resultBody);
if(resultClazz == null || resultClazz.equals(String.class)){
result = resultBody;
}else{
Resolve resolve = ResolveFactory.createResolve(setting .getDataType());
result = resolve.resolve(resultBody, resultClazz);
}
}catch(Exception e){
LoggerUtil.logError(HttpProxy.class.getName(), "数据接收类:" + resultClazz==null?null :resultClazz.getName() +"请求地址: " + url + "请求参数: " + data ,e );
throw new BusinessException();
}
return result;
}
public static Object sendAddHeader(String url,SettingModel setting,Map<String,String> parameter,String Authorization,Class<?> resultClazz){ Object result = null; //StringBuilder result2 = new StringBuilder(); LoggerUtil.trace(HttpProxy. class.getName(), "数据接收类:" , resultClazz==null?null:resultClazz.getName() + "请求地址: " + url + "请求参数: " + parameter + "Auth认证密钥" + Authorization ); try { SSLContextBuilder builder = new SSLContextBuilder(); builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( builder.build()); CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory( sslsf) .build();
// HttpUriRequest method = HttpMethodUtil.createMethod(url,setting,parameter,Authorization); HttpPost method = new HttpPost(url); if(Authorization != null && !"".equals(Authorization)){ method.addHeader("Authorization ", Authorization); } List<NameValuePair> param = new ArrayList<NameValuePair>(); Set<Entry<String,String>> entrySet = parameter.entrySet(); Iterator<Entry<String,String>> iterator = entrySet. iterator(); while(iterator.hasNext()){ Entry<String,String> entry = iterator.next(); param.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } method .setEntity(new UrlEncodedFormEntity(param, HTTP.UTF_8));
HttpResponse resp = httpclient.execute(method); String resultBody = EntityUtils.toString(resp.getEntity(), HTTP.UTF_8); LoggerUtil.trace(HttpProxy.class.getName(), "返回值:" , resultBody); if (resultClazz == null || resultClazz.equals(String.class)){ }else{ Resolve resolve = ResolveFactory.createResolve(setting.getDataType()); result = resolve.resolve(resultBody, resultClazz); } }catch(Exception e){ LoggerUtil.logError(HttpProxy.class.getName(), resultClazz==null?null:resultClazz.getName() +"请求地址: " + url + "请求参数: " + parameter ,e ); } return result ; }
public static Object send(String url,Map<String,String> parameter,Class<?> resultClazz) throws IOException{
SettingModel setting = new SettingModel();
return send(url,setting,parameter,resultClazz);
}
}
http请求及模拟浏览器发送http请求的更多相关文章
- java 模拟浏览器发送post请求
java使用URLConnection发送post请求 /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求 ...
- 使用HttpClient配置代理服务器模拟浏览器发送请求调用接口测试
在调用公司的某个接口时,直接通过浏览器配置代理服务器可以请求到如下数据: 请求url地址:http://wwwnei.xuebusi.com/rd-interface/getsales.jsp?cid ...
- .net后台模拟浏览器get/post请求
#region 后台模拟浏览器get/post请求 /// <summary> /// 发送请求方式 /// </summary> /// <param name=&qu ...
- 关于对浏览器发送POST请求的一点研究
网上对与HTTP的Method,GET和POST的区别,说得毕竟详细.然后提到一点,说浏览器对两者的还有一个比较容易让人忽略的区别就是:POST会分2次发送,而GET只1次. GET发送1次,这个没什 ...
- ajax是怎么发请求的和浏览器发的请求一样吗?cookie
下午设置cookie时出现了个问题 用ajax发的post请求php,在php的方法里设置了cookie,然后在浏览器请求的php里打印cookie值但是一直获取不到cookie的值 分析: 1.aj ...
- telnet客户端模拟浏览器发送请求
telnet 客户端 telnet客户端能够发出请求去连接服务器(模拟浏览器) 使用telnet之前,需要开启telnet客户端 1.进入控制面板 2.进入程序和功能,选择打开或关闭windows功能 ...
- Java基础教程——模拟浏览器发送请求
JAVA访问网页 分别测试使用get和post方法访问网页,可以收到服务器的请求,并写入到html文件中. import java.io.*; import java.net.*; import ja ...
- 20200726_java爬虫_使用HttpClient模拟浏览器发送请求
浏览器获取数据: 打开浏览器 ==> 输入网址 ==> 回车查询 ==> 返回结果 ==> 浏览器显示结果数据 HttpClient获取数据: 创建HttpClient ==& ...
- java模拟浏览器发送请求
package test; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOExcep ...
随机推荐
- 李洪强 - C语言8-Scanf函数
C语言的scanf函数 一.变量的内存分析 (一)字节与地址 ①. 内存以字节为单位 每个字节都有自己的内存地址,根据地址就可以找到该字节.整个内存相当于一整个酒店,而酒店以房间为单位,在这里每个房间 ...
- lightning mdb 源代码分析(1)
lighting mdb(lmdb) 是一个高性能mmap kv数据库,基本介绍和文档参见symas官网,本文将尝试分析其源代码结构以理解数据库设计的关键技术. 本系列文章将尝试从以下几个方面进行分析 ...
- maven 将依赖的jar包打入jar包中
pom中加入以下代码,利用mvn assembly:assembly就可以了. <build> <plugins> <plugin> <artifactId& ...
- 活跃天数计算用户等级模仿QQ的升级方式
QQ等级的算法:设当前等级为N,达到当前等级最少需要的活跃天数为D,当前活跃天数为Dc,升级剩余天数为Dr,则: 从而推出: 好了,引述完成,懒得写字了,贴出代码: 复制内容到剪贴板 代码: < ...
- [转]WinForm和WebForm下读取app.config web.config 中邮件配置的方法
本文转自:http://blog.csdn.net/jinbinhan/article/details/1598386 1. 在WinForm下读取 App.config中的邮件配置语句如下: Con ...
- Java开发环境准备
Java开发环境准备 这里主要讲JDK的配置,JDK的安装和安装一般的应用软件一样,下载JDK安装就可以了,但安装后主要是配置好才可用.我相信很多初学者和我刚开始一样,安装好JDK以后就直接点击桌面上 ...
- Web 在线文件管理器学习笔记与总结(17)复制文件 (18)剪切文件
(17)复制文件 ① 复制文件通过copy($src,$dst) 来实现 ② 检测目标目录是否存在,如果存在则继续检测目标目录中是否存在同名文件,如果不存在则复制成功 file.func.php 中添 ...
- Android开发的七大环节
Android开发的七大环节 浏览:25 发布日期:2015/10/27 分类:职场感悟 一个完整的Android 开发流程主要包括策划.软件.交互.视觉.测试.运营维护这七大环节,其中的每一个环 ...
- HTML: 文檔流是什麼?
[作者好人]:http://www.nowamagic.net/librarys/veda/detail/1190 文档流 将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流. ...
- C、VDD、VSS、 VEE 和VPP的区别
http://www.cnblogs.com/crazybingo/archive/2010/05/14/1735802.html C.VDD.VSS. VEE 和VPP的区别 在电子电路中,常可以看 ...