使用HttpClient进行Post通信
---------------siwuxie095
首先到 Apache官网 下载相关的库文件
Apache官网:http://www.apache.org/
在官网页面的最下方是
Apache 所支持的所有项目列表(APACHE PROJECT LIST)
找到
HttpComponents,点击进入,选择 Download,下载
HttpClient 4.5.3(GA) 版本(截止 2017/3/31 最新 GA 版本)
页面链接:http://hc.apache.org/downloads.cgi
httpcomponents-client-4.5.3-bin.zip
解压后一览:
工程名:TestHttpClient
包名:com.siwuxie095.httpclient
类名:TestPost.java
打开资源管理器,在工程 TestHttpClient 文件夹下,创建一个
文件夹:lib,在其中放入:
(1)httpclient-4.5.3.jar
(2)httpcore-4.4.6.jar
(3)commons-logging-1.2.jar
工程结构目录一览:
全选这 3 个
jar 包(利用 Shift 全选),右键->Build Path->Add to Build Path
此时,工程结构目录一览:
代码:
package com.siwuxie095.httpclient; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; public class TestPost { public static //运行线程:Post,使用匿名对象 new Post().start(); } } class Post extends Thread{
//创建一个HttpClient,使用静态方法调用类HttpClients的reateDefault() //获取一个新的实例 HttpClient client=HttpClients.createDefault();
//复写run() @Override public
//准备一个网络读写的接口: //(来自于有道翻译的在线翻译接口,让其翻译:welcome) //(1)http://fanyi.youdao.com/openapi.do //(2)keyfrom=siwuxie095-test&key=2140200403&type=data // &doctype=xml&version=1.1&q=welcome
//创建一个HttpPost,传入String:指定请求的URL HttpPost post=new HttpPost("http://fanyi.youdao.com/openapi.do");
try {
//执行post之前,添加发送的数据 //通过Post方式向服务器发送参数: //keyfrom=siwuxie095-test&key=2140200403&type=data //&doctype=xml&version=1.1&q=welcome // //通过setEntity()方法添加发送的数据, //传入一个新的Entity:new UrlEncodedFormEntity() 匿名对象 //给UrlEncodedFormEntity()传入一个List对象并指定字符集:UTF-8 //则需要创建一个List,类型为 BasicNameValuePair,实例化为ArrayList //为List添加参数 add(),再传入新的BasicNameValuePair->键值对 List<BasicNameValuePair> list=new ArrayList<>(); list.add(new BasicNameValuePair("keyfrom", "siwuxie095-test")); list.add(new BasicNameValuePair("key", "2140200403")); list.add(new BasicNameValuePair("type", "data")); list.add(new BasicNameValuePair("doctype", "xml")); list.add(new BasicNameValuePair("version", "1.1")); list.add(new BasicNameValuePair("q", "welcome")); post.setEntity(new UrlEncodedFormEntity(list,"UTF-8"));
//让HttpClient执行post操作 //execute()返回HttpResponse类型,创建以接收返回值 //有异常抛出,使用 try catch 捕获 HttpResponse response=client.execute(post);
//从response中获取当前请求的结果 //getEntity()返回HttpEntity类型,创建以接收返回值 HttpEntity entity=response.getEntity();
//将entity返回成一个String类型 //调用类EntityUtils的静态方法toString(), //传入entity的同时,指定转换为字符串时使用的编码 String result=EntityUtils.toString(entity, "UTF-8");
//打印结果,输出为 HTML 数据 System.out.println(result);
} catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
}
} |
运行一览:
关于
有道翻译
API,详见本人博客的分类:来一杯Java,
里面的
使用Get进行Http通信 或 使用Post进行Http通信
本人博客(任选一个)链接:
https://www.baidu.com/s?ie=UTF-8&wd=siwuxie095
【made by siwuxie095】
最新文章
- 转,Oracle中关于处理小数点位数的几个函数,取小数位数,Oracle查询函数
- Dynamo分布式系统——「RWN」协议解决多备份数据如何读写来保证数据一致性,而「向量时钟」来保证当读取到多个备份数据的时候,如何判断哪些数据是最新的这种情况
- Entity Framework 5中应用表值函数进行Linq查询
- 自定义表单input
- c++函数模板---3
- List中toArray()的使用方法
- Android播放音频的两种方式
- NPOI之使用EXCEL模板创建报表
- 【Unity 3D】教程(1)建立场景
- go web 第三天 学习笔记 --mysql
- day-1 用python编写一个简易的FTP服务器
- Servlet总结二(文件路径)
- [转]impala操作hive数据实例
- C++的IO处理中的头文件以及类理解(2)<;sstream>;头文件
- tomcat 启动慢问题
- node.js 框架express关于报错页面的配置
- [转]qtcreator中常用快捷键总结
- vc++调用exe获取输出信息
- 浅谈tcp socket的backlog参数
- android 在HTML中显示bitmap
热门文章
- Educational Codeforces Round 33 (Rated for Div. 2)A-F
- 浅谈 C# CLR 执行模块
- LSTM与Highway-LSTM算法实现的研究概述
- nyoj-67-三角形面积(S=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2))
- POJ--1094--Sorting It All Out||NYOJ--349--Sorting It All Out(拓扑排序)
- L115
- SVN管理多个项目版本库 (windows,linux 通用)
- Reinforcement Learning Q-learning 算法学习-2
- CodeForces - 682E: Alyona and Triangles(旋转卡壳求最大三角形)
- 非maven项目下载maven的jar