【commons-httpclient】Java中HttpClient工具访问Web请求
注意jar包是:
HttpClient工具使用
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
为什么要使用HttpClient工具:
原生态的Socket基于传输层,现在我们要访问的WebService是基于HTTP的属于应用层,所以我们的Socket通信要借助HttpClient发HTTP请求,这样格式才能匹配
HttpClient使用步骤如下:
- 创建 HttpClient 的实例
- 创建某种连接方法的实例,在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址
- 配置要传输的参数,和消息头信息
- 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例
- 通过response读取字符串
- 释放连接。无论执行方法是否成功,都必须释放连接
jar包:
aaarticlea/png;base64,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" alt="" />
1。第一种使用方式:
Get方式:
public static void getMethod() throws Exception {
// 创建get对象,类似get请求
GetMethod getMethod = new GetMethod( "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=18373551982&userID=");
// 发送get请求
int code = http.executeMethod(getMethod);
System.out.println("返回的消息码为:" + code);
System.out.println("返回的消息为:" + getMethod.getResponseBodyAsString());
getMethod.releaseConnection();
}
POST方式:
public static void postMethod() throws Exception {
// 创建post请求,类似Post请求
PostMethod postMethod = new PostMethod( "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo");
// 设置请求的正文内容
postMethod.setRequestBody("mobileCode=18373551982&userID=");
// 设置传送信息的格式
postMethod.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded");
// 发送post请求
int code = http.executeMethod(postMethod);
System.out.println("返回消息码为:" + code);
System.out.println("返回的消息为:" + postMethod.getResponseBodyAsString());
postMethod.releaseConnection();
}
2.第二种使用方式
/**HttpClient访问网络的实现步骤:
* 1. 准备一个请求客户端:浏览器
* 2. 准备请求方式: GET 、POST
* 3. 设置要传递的参数
* 4.执行请求
* 5. 获取结果
*/
get方式:(不用设置参数)
package ws_a; import java.io.IOException; import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.junit.Test; public class HttpClientTest { @Test
public void testGet() throws HttpException, Exception{
HttpClient client = new HttpClient();
GetMethod getMethod = new GetMethod("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode="+"13110410513"+
"&userID="+"");
//4.执行请求 ,结果码
int code=client.executeMethod(getMethod);
//5. 获取结果
String result=getMethod.getResponseBodyAsString();
System.out.println("get请求的结果:"+result);
}
}
get请求的结果:<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://WebXml.com.cn/">13110410513:陕西 西安 陕西联通GSM卡</string>
Post方法:
@Test
public void post() throws Exception{
HttpClient client=new HttpClient();
PostMethod postMethod=new PostMethod("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo");
//3.设置请求参数
postMethod.setParameter("mobileCode", "13834786998");
postMethod.setParameter("userID", "");
//4.执行请求 ,结果码
int code=client.executeMethod(postMethod);
//5. 获取结果
String result=postMethod.getResponseBodyAsString();
System.out.println("Post请求的结果:"+result);
}
Post请求的结果:<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://WebXml.com.cn/">13834786998:山西 长治 山西移动全球通卡</string>
如果返回的中文乱码,我们可以设置编码:
// 防止中文乱码
postMethod.getParams().setContentCharset("utf-8");
maven地址:
<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
【commons-httpclient】Java中HttpClient工具访问Web请求的更多相关文章
- Java中httpClient中三种超时设置
本文章给大家介绍一下关于Java中httpClient中的三种超时设置小结 在Apache的HttpClient包中,有三个设置超时的地方: /* 从连接池中取连接的超时时间*/ ConnManage ...
- Java 中的 protected 访问修饰符你真的了解吗?
protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...
- java高并发系列 - 第22天:java中底层工具类Unsafe,高手必须要了解
这是java高并发系列第22篇文章,文章基于jdk1.8环境. 本文主要内容 基本介绍. 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线 ...
- Java中json工具对比分析
Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...
- struts2中的action访问web对象
Struts2的Action就是一个普通的POJO对象,它和Web对象request.response.session和application没有耦合在一起,这样便于单独测试Action,那么我们在A ...
- JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?
本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...
- java中四种访问修饰符
Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量) public protected d ...
- Java中protected方法访问权限的问题
先看Test.java 此时出现上文提到的错误:The method clone from the type Object is not visiuable. 我们已经清楚Object.clone() ...
- Java 中关于default 访问权限的讨论
Java中关于成员变量访问权限问题一般书中会给出如下表格: 简单地描述一下表中的内容:用private 修饰的成员变量只能在类内部访问:用default修饰的成员变量可以再内部访问,也可以被同个包(同 ...
随机推荐
- 网络性能测试工具iperf
参考网站:https://www.cnblogs.com/yingsong/p/5682080.html https://docs.azure.cn/zh-cn/articles/azure-oper ...
- 解决python执行linux查看文件命令后,因为^@特殊符号导致部分内容不显示的问题
问题现象 文件a的内容如下: 查看第3行到第5行的内容:sed -n '3,5p' /tmp/test/a 可见在命令行执行,是没有问题的. 在python中使用paramiko模块执行linux命令 ...
- 如何在idea中导入本地所需要的jar包
今天遇到一个问题,在idea创建普通java工程时不知道如何导入jar包,上网差了一下,也算是一个整理.
- 树莓派实现远程下载(apache2+aria2+webui-aria2)
1.挂载存储设备(可远程设备) 本例是挂载路由器上的移动硬盘,也可以挂载连接在树莓派上的U盘. sudo mount -t cifs -o dir_mode=0777,file_mode=0777 ...
- js数组类型判断与数据类型判断回顾
判断一个对象是否是数组方法有多种: 一.Array.isArray()函数 在ECMAScript5中可以通过Array.isArray()来做这件事: Array.isArray({}); //fa ...
- git 使用备忘
git首次安装后的设置: 首先打开hash.exe输入用户名和邮箱 1 2 $ git config --global user.name "Your Name" $ git co ...
- javascript获取事件源对象和产生事件的对象
事件源对象是指event对象,其封装了与事件相关的详细信息,比如按键状态. 获取事件源对象的方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...
- 吴裕雄 数据挖掘与分析案例实战(5)——python数据可视化
# 饼图的绘制# 导入第三方模块import matplotlibimport matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['S ...
- break、continue、pass介绍
break.continue.pass介绍 break:跳出当前循环 continue:跳出本次循环,进行下一次循环 pass:什么也不做,占位.
- python 形参
def fun(x="dx",y="dy"): print "fun------" print x print y fun()fun(&qu ...