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请求,实现查询快递物流和智能机器人对话的更多相关文章

  1. HttpClient发送get,post接口请求

    HttpClient发送get post接口请求/*  * post  * @param url POST地址 * @param data POST数据NameValuePair[] * @retur ...

  2. Android笔记---使用HttpClient发送POST和GET请求

    在Android上发送 HTTP 请求的方式一般有两种, HttpURLConnection 和 HttpClient,关于HttpURLConnection的使用方法能够參考HTTP之利用HttpU ...

  3. Java实现HttpClient发送GET、POST请求(https、http)

    1.引入相关依赖包 jar包下载:httpcore4.5.5.jar    fastjson-1.2.47.jar maven: <dependency> <groupId>o ...

  4. java使用HttpClient 发送get、pot请求

    package eidolon.messageback.PostUtil; import java.io.BufferedReader; import java.io.IOException; imp ...

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

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

  6. 使用httpclient发送get或post请求

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

  7. HttpClient 发送 HTTP、HTTPS 请求的简单封装

    import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.Http ...

  8. [java,2018-01-16] HttpClient发送、接收 json 请求

    最近需要用到许多在后台发送http请求的功能,可能需要发送json和xml类型的数据. 就抽取出来写了一个帮助类: 首先判断发送的数据类型是json还是xml: import org.dom4j.Do ...

  9. HttpClient发送Get和Post请求

    package JanGin.httpClient.demo; import java.io.IOException; import java.io.UnsupportedEncodingExcept ...

随机推荐

  1. Hsqldb中设置主键,并让主键自增

    CREATE TABLE userinfo ( Id INTEGER GENERATED BY DEFAULT AS IDENTITY, Name varchar(100) NOT NULL, Dep ...

  2. .NET实现自动编译

    前言 因每次发布版本的时候,都需要打开vs项目,然后进行编译.如果刚好手里有文件在修改,就需要先签入之类的.所以想找个可以实现自动编译的工具. 在网上查询了不少资料,终于基本上实现了自动编译的功能.因 ...

  3. 【C语言】 8421BCD码与二进制的转换

    #define BCD2TODEC(bcd) (bcd) = ((bcd) & 0x0f)+ ((bcd)>>4)*10 #define BIN2BCD(bcd) (bcd) = ...

  4. EF5.0中的跨数据库操作

    以前在用MVC + EF 的项目中,都是一个数据库,一个DbContext,因此一直没有考虑过在MVC+EF的环境下对于多个数据库的操作问题.等到要使用时,才发现这个问题也不小(关键是有个坑).直接说 ...

  5. python ddt模块

    ddt模块包含了一个类的装饰器ddt和两个方法的装饰器: data:包含多个你想要传给测试用例的参数: file_data:会从json或yaml中加载数据: 通常data中包含的每一个值都会作为一个 ...

  6. [BZOJ 3652]大新闻

    [BZOJ 3652] 大新闻 题意 随机从 \([0,n)\) 中选取一个整数 \(x\), 并从 \([0,n)\) 中再选取一个整数 \(y\). 有 \(p\) 的概率选取一个能令 \(x\o ...

  7. PyQt5--QPixmap

    # -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...

  8. 最好用的jquery列表拖动排列(由项目提取)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wuchengzeng/article/details/31766235 最好的jquery列表拖动排 ...

  9. 【转】使用Chrome Frame,彻底解决浏览器兼容问题

    本文转自http://www.ryanbay.com/?p=269,感谢该作者的总结 X-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的. 通过在meta中设置 ...

  10. Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群

    这里的etcd集群复用我们测试的3个节点,3个node都要安装并启动,注意修改配置文件 1.TLS认证文件分发:etcd集群认证用,除了本机有,分发到其他node节点 scp ca.pem kuber ...