读取配置文件的URL,使用httpClient发送Post和Get请求,实现查询快递物流和智能机器人对话
1、主要jar包:
httpclient-4.3.5.jar httpcore-4.3.2.jar
2、目录结构如图所示:

3、url.properties文件如下:
geturl=http://www.kuaidi100.com/query
posturl=http://www.tuling123.com/openapi/api

4、主要代码 GetAndPost.java:
/**
*
*/
package getandpost; import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties; import org.apache.commons.collections.map.LinkedMap;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import com.google.gson.Gson; /**
* @author hy
* @date 2019-02-26 14:02:56
*
*/
public class GetAndPost { public static void main(String[] args) throws Exception { /**
* 快递公司编码: 申通="shentong" EMS="ems" 顺丰="shunfeng" 圆通="yuantong"
* 中通="zhongtong" 韵达="yunda" 天天="tiantian" 汇通="huitongkuaidi"
* 全峰="quanfengkuaidi" 德邦="debangwuliu" 宅急送="zhaijisong"
*/
doGet(paraUtil("yunda", "3101775486667"), "");
doPost("2581f443bf364fd8a927fe87832e3d33", "晚上吃啥?", "hyblogs", "");
} public static String paraUtil(String param1, String param2) {
/*
* 接收String ,转为url
*/
HashMap<String, String> Map = new HashMap<>();
String para = null;
Map.put("type", param1);
Map.put("postid", param2);
StringBuffer parameters = new StringBuffer();
for (Entry<String, String> mp : Map.entrySet()) {
parameters.append(mp.getKey() + "=" + mp.getValue() + "&");
}
para = "&"
+ parameters.toString().substring(0,
parameters.toString().length() - 1);
return para; } /* 发送GET的工具方法 */
public static String doGet(String content, String encode) throws Exception {
if (encode == null || "".equals(encode)) {
encode = "utf-8";
}
String geturl = getConfig().get("geturl");
String response = null;
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(geturl);
client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,encode);
System.out.println(method.getName());
try {
if (StringUtils.isNotBlank(content))
method.setQueryString(URIUtil.encodeQuery(content));
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) // 等于200表示请求成功
{
response = method.getResponseBodyAsString();
}
} catch (URIException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
method.releaseConnection();
}
System.out.println(response);
return response;
} /* 发送Post请求的工具方法 */
public static String doPost(String key, String info, String userid,
String encode) throws Exception {
if (encode == null || "".equals(encode)) {
encode = "utf-8";
}
String posturl = getConfig().get("posturl");
String response = null;
try {
// 第一步:创建HttpClient对象
CloseableHttpClient client = HttpClients.createDefault();
// 第二步:创建httpPost对象
HttpPost httpPost = new HttpPost(posturl);
System.out.println(HttpPost.METHOD_NAME);
LinkedMap map = new LinkedMap();
map.put("key", key);
map.put("info", info);
map.put("userid", userid);
Gson gson = new Gson();
String json = gson.toJson(map);
StringEntity entity = new StringEntity(json, encode);// 解决中文乱码问题
entity.setContentEncoding(encode);
entity.setContentType("application/json");
httpPost.setEntity(entity);
HttpResponse resp = client.execute(httpPost);
System.out.println(resp);
if (resp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) // 等于200表示请求成功
{
HttpEntity he = resp.getEntity();
response = EntityUtils.toString(he, "UTF-8");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(response);
return response;
} public static Map<String, String> getConfig() throws Exception {
HashMap<String, String> map = new HashMap<String, String>();
Properties property = new Properties();
try {
property = PropertiesUtil.loadProperties("config/url.properties");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
map.put("geturl", property.getProperty("geturl"));
map.put("posturl", property.getProperty("posturl"));
return map;
}
}
5、读取配置文件中的url,PropertiesUtil.java:
package getandpost; import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties; public class PropertiesUtil {
public static Properties loadProperties(String... profilepath) throws IOException {
Properties prop = new Properties();
//传入的多个配置文件中,如有相同的属性名,以最后的配置文件属性值为准(会覆盖掉前面的属性值)
for (String path : profilepath) {
try {
prop.load(PropertiesUtil.class.getClassLoader().getResourceAsStream(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return prop;
}
}
运行结果:

读取配置文件的URL,使用httpClient发送Post和Get请求,实现查询快递物流和智能机器人对话的更多相关文章
- HttpClient发送get,post接口请求
HttpClient发送get post接口请求/* * post * @param url POST地址 * @param data POST数据NameValuePair[] * @retur ...
- Android笔记---使用HttpClient发送POST和GET请求
在Android上发送 HTTP 请求的方式一般有两种, HttpURLConnection 和 HttpClient,关于HttpURLConnection的使用方法能够參考HTTP之利用HttpU ...
- Java实现HttpClient发送GET、POST请求(https、http)
1.引入相关依赖包 jar包下载:httpcore4.5.5.jar fastjson-1.2.47.jar maven: <dependency> <groupId>o ...
- java使用HttpClient 发送get、pot请求
package eidolon.messageback.PostUtil; import java.io.BufferedReader; import java.io.IOException; imp ...
- java apache commons HttpClient发送get和post请求的学习整理(转)
文章转自:http://blog.csdn.net/ambitiontan/archive/2006/01/06/572171.aspx HttpClient 是我最近想研究的东西,以前想过的一些应用 ...
- 使用httpclient发送get或post请求
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建 ...
- HttpClient 发送 HTTP、HTTPS 请求的简单封装
import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.Http ...
- [java,2018-01-16] HttpClient发送、接收 json 请求
最近需要用到许多在后台发送http请求的功能,可能需要发送json和xml类型的数据. 就抽取出来写了一个帮助类: 首先判断发送的数据类型是json还是xml: import org.dom4j.Do ...
- HttpClient发送Get和Post请求
package JanGin.httpClient.demo; import java.io.IOException; import java.io.UnsupportedEncodingExcept ...
随机推荐
- 理解lua中 . : self
前言 在LUA中,经常可以看到:. self,如果你学习过Java或C#语言,可以这样理解 .对于c#和java的静态方法 :相当于是实例方法 今天在CSDN上看到一篇博客写的很清楚,转载过来 原文出 ...
- 【require.js】模块化开发
一.Require.js及AMD Require.js:是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一. AMD(Asynchronous Module Definit ...
- Django2.0路由层-URLconf
目录 DJango2.0路由层-URLconf 概述 urlpatterns 实例 path转换器 自定义path转换器 使用正则表达式 命名组(有名分组) URLconf匹配请求URL中的哪些部分 ...
- 【Alpha 冲刺】 6/12
今日任务总结 人员 今日原定任务 完成情况 遇到问题 贡献值 胡武成 建立数据库 未完成 表结构文档已设计好,服务器mysql刚配置完成,但是,SpringMVC框架还没有熟络,不清楚如何使用该框架去 ...
- BZOJ 1085 骑士精神 迭代加深搜索+A*
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1085 题目大意: 在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个 ...
- docker-compose.md
安装 pip python 2.7+的系统同yum先安装pip命令. # yum install -y python2-pip # pip install docker-compose 网络安装 # ...
- C内存开辟与平移
- Shallwe学长的模拟赛
NOIP Simulated Test 这个名字一听就很高端. T1:sGCD:http://uoj.ac/problem/48 题意概述:给定一个长度为$n$的序列,求$sgcd(a_1,a_i)$ ...
- 【题解】[HNOI2008]神奇的国度—BZOJ1006。
之前说顺着打BZOJ结果又被自己给鸽了qwq. ------------------------------------ 言归正传这道题应该怎么做. 先给大家普及一下弦图(连接环上俩个不相邻节点的边称 ...
- docker构建Java环境
FROM java:7 COPY . /usr/src/javaapp WORKDIR /usr/src/javaapp RUN javac HelloWorld.java CMD ["ja ...