HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.5 (GA) (2015-09-11)

需要使用的jar包

使用步骤,思路

1, 创建Http客户端对象
 2, 设置请求的url,连接的地址
 3, 设置请求的方式(Get/Post),请求内容的类型,接收内容的类型,字符编码
 4, 设置请求参数(请求内容)
 5, 按请求的方式执行请求,返回Http状态码
 6, 获得响应内容
 7, 释放连接

package com.httpclient1;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;

import com.google.gson.Gson;

/**
* 用commons-httpclient-3.1 框架, 模拟客户端请求
* @since 2016-4-11
* @version 1.0
*/
public class Client {

public static void main(String[] args) {
String serviceUrl = "http://localhost:8080/MbtForSpring/test/demo/serviceOne.do";

Map<String, Object> parames = new HashMap<String, Object>();
Gson gson = new Gson();
String json = null;
try {
parames.put("AppKey", "132152");
parames.put("Ticket", "57077c8537");

json = gson.toJson(parames);

System.out.println("json:" + json);

String str = doPost(serviceUrl, json);
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}
}

/**
*
* @param strUrl
* @param postString
* @return
* String
*/
@SuppressWarnings("deprecation")
public static String doPost(String strUrl, String postString) {
String receive = null;

// 请求发布在本地 Tomcat上服务
PostMethod method = new PostMethod(strUrl);
// PostMethod method = new PostMethod();
try {
HttpClient client = new HttpClient();
// client.getHostConfiguration().setHost(new HttpHost());

//请求 网络上的服务, 用这种方式请求本地,返回一个Html页面
// client.getHostConfiguration().setHost(new URI(strUrl));

method.setRequestHeader("Content-type", "application/json; charset=UTF-8");
method.setRequestHeader("Accept", "application/json; charset=UTF-8");
// 设置为默认的重试策略
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());

// 4, 设置请求参数(请求内容)
/* NameValuePair pair1 = new NameValuePair("key", "value");
NameValuePair pair2 = new NameValuePair("key", "value");
method.setRequestBody(new NameValuePair[]{pair1, pair2} );*/

method.setRequestBody(postString);
int rspCode = client.executeMethod(method);
//
System.out.println("rspCode:" + rspCode);
receive = method.getResponseBodyAsString();
System.out.println("receive:" + receive);
return receive;
} catch (Exception e) {
e.printStackTrace();
} finally {
method.releaseConnection();
}
return receive;
}
}

原文:https://blog.csdn.net/sxchen_csdn/article/details/51144027

org.apache.commons.httpclient.HttpClient的使用(转)的更多相关文章

  1. org.apache.commons.httpclient

    org.apache.commons.httpclient /** * post 方法 * @param url * @param params * @return */ public static ...

  2. java apache commons HttpClient发送get和post请求的学习整理(转)

    文章转自:http://blog.csdn.net/ambitiontan/archive/2006/01/06/572171.aspx HttpClient 是我最近想研究的东西,以前想过的一些应用 ...

  3. org.apache.commons.httpclient工具类

    import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpcl ...

  4. httpClient使用中报错org.apache.commons.httpclient.HttpMethodBase - Going to buffer response body of large or unknown size.

    在使用HttpClient发送请求,使用httpMethod.getResponseBodyAsString();时当返回值过大时会报错: org.apache.commons.httpclient. ...

  5. org.apache.commons.httpclient和org.apache.http.client区别(转)

    官网说明: http://hc.apache.org/httpclient-3.x/ Commons HttpClient项目现已结束,不再开发.它已被其HttpClient和HttpCore模块中的 ...

  6. org.apache.commons.httpclient工具类(封装的HttpUtil)

    import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...

  7. 通过 Apache Commons HttpClient 发送 HTTPS 请求

    1.通过 HTTPS 发送 POST 请求: 2.HTTPS 安全协议采用 TLSv1.2: 3. 使用代理(Proxy)进行 HTTPS 访问: 4.指定 Content-Type 为:applic ...

  8. org.apache.http.client.HttpClient; HttpClient 4.3超时设置

    可用的code import org.apache.commons.lang.StringUtils;import org.apache.http.HttpEntity;import org.apac ...

  9. apache.http.client.HttpClient

    前言 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java net包中已经提 ...

随机推荐

  1. 常见C C++问题(转)

    这一部分是C/C++程序员在面试的时候会被问到的一些题目的汇总.来源于基本笔试面试书籍,可能有一部分题比较老,但是这也算是基础中的基础,就归纳归纳放上来了.大牛们看到一笑而过就好,普通人看看要是能补上 ...

  2. Java for LeetCode 102 Binary Tree Level Order Traversal

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  3. 剑指Offer:二叉树打印成多行【23】

    剑指Offer:二叉树打印成多行[23] 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目分析 Java题解 package tree; import java.uti ...

  4. PAT 乙级 1081. 检查密码 (15) 【字符串】

    题目链接 https://www.patest.cn/contests/pat-b-practise/1081 思路 有一个坑点 可能会输入空格 也就是说 要用 geline 或者 gets() 然后 ...

  5. linux下MySQL5.6安装记录

    MySQL下载地址: ftp://mirror.switch.ch/mirror/mysql/Downloads/MySQL-5.6/http://mirrors.sohu.com/mysql/   ...

  6. 分享知识-快乐自己:SpringBoot结合使用拦截器(判断是否用户是否已登陆)

    所有的开发之中拦截器一定是一个必须要使用的功能,利用拦截器可以更加有效的实现数据的验证处理,而且最为幸运的是在SpringBoot之中所使用的拦截器与Spring中的拦截器完全一样. 基础拦截器操作: ...

  7. [原创]Java集成PageOffice在线打开编辑word文件 - Spring Boot

    开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven p ...

  8. string类封装

    class cMyString{ char* m_str; int m_strSize;public: cMyString();//指针指向一个空字符串 cMyString(char* str);// ...

  9. Posix线程编程指南(1)

    这是一个关于Posix线程编程的专栏.作者在阐明概念的基础上,将向您详细讲述Posix线程库API.本文是第一篇将向您讲述线程的创建与取消.   一.线程创建 1.1 线程与进程相对进程而言,线程是一 ...

  10. super.onCreate(savedInstanceState) 以及onCreate(Bundle savedInstanceState, PersistableBundle persistentState)

    super.onCreate(savedInstanceState) 调用父类的onCreate构造函数. 当一个Activity在生命周期结束前,会调用onSaveInsanceState()这个回 ...