`
keep_going
  • 浏览: 11662 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

http请求与响应工具类

阅读更多

 

 对于http的请求与响应,可以使用commons-httpclient.jar来实现数据的接收与发送,代码如下:
package com.project.util;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;

/**
 * Http请求公共类
 * @author Administrator
 *
 */
public class HttpPost {
	private static HttpClient httpclient = null;
	private static int iTimeOut = 5000;
	@SuppressWarnings("rawtypes")
	private static Map map = new HashMap();
	private static final Object object = new Object();
	private String postUrl = null;
	
	private HttpPost() {
		
	}
	
	public static HttpPost getInstance(String sUrl) {
		HttpPost instance = null;
		if((instance = (HttpPost) map.get(sUrl)) == null) {
			synchronized (object) {
				if((instance = (HttpPost)map.get(sUrl)) == null) {
					if(httpclient == null) {
						MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();
						httpclient = new HttpClient(manager);
					}
					instance = new HttpPost();
					instance.postUrl = sUrl;
				}
			}
		}
		return instance;
	}
	
	public String post(Map map) {
		return post(map, "application/x-www-form-urlencoded", "Mozilla/4.0");
	}	
	
	public String post(Map map, String contentType, String userAgent) {
		if(iTimeOut >= 0) {
			httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(iTimeOut);
		} else {
			httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(0);
		}
		PostMethod method = new PostMethod(postUrl);
		method.addRequestHeader("Content-Type", contentType);
		method.addRequestHeader("User-Agent", userAgent);
		// 处理需要发送的字符串
		NameValuePair[] valuePairs = new NameValuePair[map.size()];
		Collection collection = map.entrySet();
		Iterator iterator = collection.iterator();
		int i = 0;
		while(iterator.hasNext()) {
			String strKey = ((Map.Entry)iterator.next()).getKey().toString();
			valuePairs[(i++)] = new NameValuePair(strKey, (String)map.get(strKey));
		}
		method.setRequestBody(valuePairs);
		String responseStr = "";
		try {
			httpclient.executeMethod(method);
			String charSet = method.getResponseCharSet();
			responseStr = new String(method.getResponseBodyAsString().getBytes(charSet), "ISO8859-1");
		} catch(Exception e) {
			e.printStackTrace();
		}
		return responseStr;
	}
}

 

分享到:
评论

相关推荐

    Java Web响应结果工具类

    ResultResponse 是一个设计用于封装Web应用响应的Java类。它通过泛型支持对各种数据类型的响应封装,包含以下几个关键部分: - 状态(Status):表示请求处理的成功或失败。 - 状态码(Code):提供具体的状态标识,...

    计算机病毒与防护:网络渗透工具漏洞利用类.ppt

    渗透工具 HTTP的请求响应模型 漏洞利用类工具 Windows密码破解工具 开发者:Oxid.it 平台:windows 版权:免费 * * * * * * * * 漏洞利用类工具 渗透工具 HTTP的请求响应模型 漏洞利用类工具 Metasploit Framework...

    使用filter配合装饰器模式实现对请求参数加密

    这是一个基于servlet的方式实现对request参数...程序中使用了本人自己封装的工具类感性趣的朋友可自行下载,目前工具类简单;加关注在后期的博客中;工具类会加强;这个程序设计的技术有servlet、filter、装饰器模式;

    Android-JavaLiteHTTP是一个用于发出HTTP请求和返回响应的小型库

    JavaLite HTTP是一个用于发出HTTP请求和返回响应的小型库。 它没有除JDK之外的依赖项。

    Java实现Http工具类的封装操作示例

    主要介绍了Java实现Http工具类的封装操作,涉及java针对http请求与响应、远程交互与字符串拼接等操作封装技巧,需要的朋友可以参考下

    Android 上传文件工具类

    * 获取响应码 200=成功 当响应成功,获取响应的流 */ int res = conn.getResponseCode(); Log.e(TAG, "response code:" + res); if (res == 200) { return SUCCESS; } }else{ ...

    HttpConnectionTool工具类

    通过HttpConnection请求跨域接口 public String invokeServiceMethod(String url,Map,String> params,Map, String> header) throws Exception{ HttpClient httpclient=new DefaultHttpClient(); HttpResponse...

    计算机病毒与防护:网络渗透工具信息收集类.ppt

    单击此处添加标题 * * * * * * * * * 目录页 网络渗透工具信息收集类 渗透工具 HTTP的请求响应模型 渗透工具不胜枚举,只能选取少数工具来介绍: ?信息收集类工具 ?漏洞利用类工具 ?辅助类及工具套件 渗透工具 信息...

    umi-request:基于获取的请求工具

    支持的功能url参数自动序列化发布数据提交方法得到简化响应返回处理简化api超时支持api请求缓存支持支持处理gbk 请求和响应拦截器支持,例如axios 统一错误处理中间件支持取消请求支持,例如axios 从node.js发出http...

    CDSpace 测试工具

    CDSpace是基于Apache Http Client和Sun Http Server两个库,以JavaFX为GUI框架开发的一款HTTP接口测试工具,主要功能分为两部分:1、模拟HttpClient发送自定义请求给服务端,接受响应并将响应的消息体和头域显示在...

    OkHttpUtil.java

    okhttp 封装的工具类使用超级方便 HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个...

    webClient (通过向任一web服务器发送http请求,查看 服务器端过来的内容)

    通过向任一服务器发送http请求,查看server端过来的内容,状态行,响应报头,空行,实际内容. 这可以帮助理解http协议. 运行方法: 1.有eclipse或其它开发环境下: 将里面的java源文件放入任一java工程的default包中, ...

    nginx-sla:Nginx模块收集有关HTTP代码和上游响应时间的扩展统计信息,以进一步传输到诸如zabbix之类的监视工具

    nginx-sla模块收集有关HTTP代码和上游响应时间的高级统计信息,以进一步传输到诸如监视工具。 该模块回答以下问题: 上游(后端)的平均响应时间是多少? HTTP状态为200、404的响应数是多少? 不同类别的HTTP状态-2...

    jframework:基于对spring boot的二次封装,目的是减少重复代码,提高开发效率

    局部拦截支持docker部署支持k8s部署支持json序列化时自定义小数位数接口版本控制保留精度的数学计算工具类http请求工具类redis和redis分布式锁工具类json响应工具类支持Jenkinsfile重建二维码生成工具类redis id生成...

    12306火车票网站自动登录工具源码

    请求响应测试, 别小看这样的自动化测试。 什么开心农场助手,自动投票机。 网络爬虫都是 用这个做的。 相关技术 1 .NET中提供的类来发送HTTP Request 2 WebClient类的用法 3 模拟“GET” 方法 4 Cookie 的处理 ...

    Postman-7.30.1-win64.zip

    Postman是在开发或者调试网络程序的时候用来跟踪网页请求的工具,简单来说,它是用来进行接口测试和跟踪http请求的工具,这里给出github的地址: https://github.com/postmanlabs Postman的优点有以下几类: ...

    基于SpringBoot编写的RESTFul API,使用HTTP状态码与JSON作为响应规范+源代码+文档说明

    对于RESTFul API服务各有各的见解,网上大多是自己封装了controller层统一格式返回,通常情况下,不管你怎么请求,它总是响应你的http状态码为200。 而本项目中充分结合了HTTP状态码规范,使用ResponseEntity + ...

    抓包工具Charles-汉化破解

    抓取 Http 和 Https 的请求和响应,抓包是最常用的了。 重发网络请求,方便后端调试,复杂和特殊情况下的一件重发还是非常爽的(捕获的记录,直接repeat就可以了,如果想修改还可以修改)。 修改网络请求参数...

    word源码java-javaUtils-:java常用的工具类,附带Springboot配置属性目录

    工作中实用的Java工具类整理 config 多数据源的配置及动态切换数据库的切面配置(还未完善好,配置文件暂上传) database JedisUtil(redis连接操作实现) encrypt RsaUtils(rsa加密Java实现) http http.async ...

    请求者:基于Requests库构建的功能强大的现代HTTPREST客户端

    Requester是Sublime Text 3的现代,面向团队的HTTP客户端,结合了诸如Postman,Paw和HTTPie之类的应用程序功能,具有坚如磐石的可用性和Requests的秘密。 :glowing_star: 轻松设置请求正文,查询参数,自定义标头,...

Global site tag (gtag.js) - Google Analytics