【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修饰的成员变量可以再内部访问,也可以被同个包(同 ...
随机推荐
- 0_Simple__simpleSeparateCompilation
▶ 简单的将纯 C/C++ 函数放到另一个文件中,利用头文件引用到主体 .cu 中来,编译时共同编译. ▶ 源代码,把 C++ 的部分去掉了 // simpleDeviceLibrary.cuh #i ...
- servlet练习1
1. 编写一个Servlet,当用户请求该Servlet时,显示用户于几点几分从哪个IP(Internet Protocol)地址连线至服务器,以及发出的查询字符串(Query String).查询一 ...
- linux7系统开机报错failed to start login service
1.开机报错failed to start login service 参考网站:https://unix.stackexchange.com/questions/264994/kali-sudden ...
- windows installer 应用变换时的错误.请验证指定的变换路径是否有
安装Windows Installer Clean Up 清理一下残留的项目之后再装或者手动去注册表找 HKEY_CLASSES_ROOT\Installer\Products\ 下面的"子 ...
- 内容方框 fieldset
Title 登录 用户名 密码 <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
- 关于gevent的一些理解(一)
前言:gevent是python的一个并发框架,以微线程greenlet为核心,使用了epoll事件监听机制以及诸多其他优化而变得高效.而且其中有个monkey类, 将现有基于Python线程直接转化 ...
- 代码报错记录-MAVEN
报错: COMPILATION ERROR : 程序包不存在. 说是找不到程序包,我的JUNIT是父项目中的,子项目是从JAVA项目转为MAVEN项目的,难道在转成MAVEN项目时对POM文件的修改有 ...
- Axure8 实现移动端页面上下滑动效果
目前,很多Axure新人都在问如何实现界面上下滑动效果,网上相关的教程也不少,各有各的方法,但是很少有教程对滑动界限设置做出比较详细的说明,其实在工作过程中,个人发现练好Axure是很有意提升逼格的, ...
- 查看RPM包里的内容
有时候,拿到一个RPM,并不想安装它,而想了解包里的内容,怎么办呢? 如果只相知道包里的文件列表执行: #rpm -qpl packetname 如果想要导出包里的内容,而不是安装,那么执行: # r ...
- cvc-complex-type.2.3: Element 'beans' cannot have character [children]
当启动spring的项目时,有时候会抛如下异常: Line 33 in XML document from ServletContext resource [/WEB-INF/backend-serv ...