使用HttpClient进行Post通信
来源:互联网 发布:android 获取网络时间 编辑:程序博客网 时间:2024/05/04 09:58
---------------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 staticvoid main(String[] args) {
//运行线程:Post,使用匿名对象
new Post().start();
}
}
class Postextends Thread{
//创建一个HttpClient,使用静态方法调用类HttpClients的reateDefault()
//获取一个新的实例
HttpClient client=HttpClients.createDefault();
//复写run()
@Override
publicvoid run() {
//准备一个网络读写的接口:
//(来自于有道翻译的在线翻译接口,让其翻译: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】
- 使用HttpClient进行Post通信
- HttpClient-----4、使用HttpClient进行POST方式通信
- java35.HTTP通信------使用HttpClient进行Post方式通信
- Android中基于HTTP的通信技术(4)使用HttpClient进行Post方式通信
- 使用HttpClient进行Get通信
- Android 使用 HttpClient 进行网络通信,包括Get方式和Post方式
- Android 使用 HttpClient 进行网络通信,包括Get方式和Post方式
- Android 使用 HttpClient 进行网络通信,包括Get方式和Post方式
- Android 使用 HttpClient 进行网络通信,包括Get方式和Post方式(转)
- Android——使用HttpClient的HttpGet和Post方式进行网络通信
- C#使用HttpClient进行GET&POST
- 使用HttpClient进行get和post请求
- 使用Post进行Http通信
- Android HttpClient(Get,Post方式)进行网络通信
- HttpClient-----3、使用HttpClient进行GET方式通信
- java34.HTTP通信------使用HttpClient进行Get方式通信
- Java 使用httpclient Post与cxf 发布的Webservice通信
- 安卓使用HttpClient进行Http Post文件上传
- 斐波那契数列(矩阵快速幂)
- 什么叫目标,什么叫事业,写得让我失眠!也送给我自己
- 【智力题小结】
- Java+opencv 读取视频文件flv格式,按帧生成图片预览
- JPA EntitManager初体验(转载,做个个人记录)
- 使用HttpClient进行Post通信
- Oracle Aix下启停及基本命令操作
- why vue.js doesn't support templateURL
- mysql变量
- [poj3233] Matrix Power Series 矩阵快速幂
- Python2与Python3的区别
- 【已解决】Qt 5.7.0 on Ubuntu, MySQL数据库报错 (driver not loaded)
- 连接数据库工具类
- MPEG4码流的帧率计算