注意jar包是:

HttpClient工具使用

  HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

  

  为什么要使用HttpClient工具:

原生态的Socket基于传输层,现在我们要访问的WebService是基于HTTP的属于应用层,所以我们的Socket通信要借助HttpClient发HTTP请求,这样格式才能匹配

HttpClient使用步骤如下:

  1. 创建 HttpClient 的实例
  2. 创建某种连接方法的实例,在这里是 GetMethod。在 GetMethod 的构造函数中传入待连接的地址
  3. 配置要传输的参数,和消息头信息
  4. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例
  5. 通过response读取字符串
  6. 释放连接。无论执行方法是否成功,都必须释放连接

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

  1. Java中httpClient中三种超时设置

    本文章给大家介绍一下关于Java中httpClient中的三种超时设置小结 在Apache的HttpClient包中,有三个设置超时的地方: /* 从连接池中取连接的超时时间*/ ConnManage ...

  2. Java 中的 protected 访问修饰符你真的了解吗?

    protected Java 中的 protected 访问修饰符 总结 在同一个包中,类中 protected 或 default 修饰的属性或方法可以在类外被其对象 (实例) 外部访问,也可以被子 ...

  3. java高并发系列 - 第22天:java中底层工具类Unsafe,高手必须要了解

    这是java高并发系列第22篇文章,文章基于jdk1.8环境. 本文主要内容 基本介绍. 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线 ...

  4. Java中json工具对比分析

    Java中几个json工具分析 1, 环境 JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 2,分析对象 jackson1.8.2 http://jackson.c ...

  5. struts2中的action访问web对象

    Struts2的Action就是一个普通的POJO对象,它和Web对象request.response.session和application没有耦合在一起,这样便于单独测试Action,那么我们在A ...

  6. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

  7. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  8. Java中protected方法访问权限的问题

    先看Test.java 此时出现上文提到的错误:The method clone from the type Object is not visiuable. 我们已经清楚Object.clone() ...

  9. Java 中关于default 访问权限的讨论

    Java中关于成员变量访问权限问题一般书中会给出如下表格: 简单地描述一下表中的内容:用private 修饰的成员变量只能在类内部访问:用default修饰的成员变量可以再内部访问,也可以被同个包(同 ...

随机推荐

  1. WordPress换域名的301跳转方法(经典)

      一.Linux 主机,这个最简单,修改 .htaccess 把 .htaccess 文件 WordPress 部分修改成下面样子 # BEGIN WordPress <IfModule mo ...

  2. myeclipse 保存失败

    Save FailedCompilation unit name must end with .java, or one of the registered Java-like extensions ...

  3. Eclipse 更改Maven项目名

    1. 在Eclipse 中修改项目名 没错这种方法跟你预料的一样简单,当项目已经导入到 Eclipse 之后,只需要做两个事情 1.1 改项目文件夹名称 选中项目,按 F12 ,改名. 多数人改项目名 ...

  4. egret 精简游戏项目

    新建一个游戏项目,我们可以删除resource文件夹下除了default.thm.json和default.res.json文件,一旦删除,当新建皮肤exml文件时会报错 还可以删除src文件夹里除了 ...

  5. postMessage和sendMessage

    参考:http://www.cnblogs.com/giggle/p/5350288.html(浅谈webWorker) http://blog.csdn.net/zha_zi/article/det ...

  6. requireJS-初识

    浅谈requireJS 2016-04-26 21:44 by 猴子猿, 726 阅读, 0 评论, 收藏, 编辑 项目中大都使用模块化开发,requireJS作为AMD模块开发的典范,所以有必要学习 ...

  7. Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。

    Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象. 语法EDIT Object.defineProperty(obj, ...

  8. String类的intern()方法

    0.引言 什么都先不说,先看下面这个引入的例子: String str1 = new String("SEU")+ new String("Calvin"); ...

  9. frame标签使用

    今天在做onebyone作业的时候,为了使自己的页面更加美观,我便使用了frame框架,百度了他的用法,总结如下 frame,是网页开发必须掌握的知识.例如后台架构.局部刷新,页面分割,都是frame ...

  10. textbox显示定位到最后一行(最新一行)

    this.textBox1.Select(this.txtMsgInfo.TextLength, 0); this.textBox1.ScrollToCaret();