后端调用阿里云快递API接口--后端部分

这是小练手,调用接口要买,一般都会有一次机会0元100次

为了节约调用接口的次数

后端部分:(快递接口不同的话会出错)

工具类

1.HttpUtils

import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class HttpUtils {/*** get** @param host* @param path* @param method* @param headers* @param querys* @return* @throws Exception*/public static HttpResponse doGet(String host, String path, String method,Map<String, String> headers,Map<String, String> querys)throws Exception {HttpClient httpClient = wrapClient(host);HttpGet request = new HttpGet(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}return httpClient.execute(request);}/*** post form** @param host* @param path* @param method* @param headers* @param querys* @param bodys* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,Map<String, String> bodys)throws Exception {HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (bodys != null) {List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();for (String key : bodys.keySet()) {nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));}UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");request.setEntity(formEntity);}return httpClient.execute(request);}/*** Post String** @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,String body)throws Exception {HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (StringUtils.isNotBlank(body)) {request.setEntity(new StringEntity(body, "utf-8"));}return httpClient.execute(request);}/*** Post stream** @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,byte[] body)throws Exception {HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (body != null) {request.setEntity(new ByteArrayEntity(body));}return httpClient.execute(request);}/*** Put String* @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPut(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,String body)throws Exception {HttpClient httpClient = wrapClient(host);HttpPut request = new HttpPut(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (StringUtils.isNotBlank(body)) {request.setEntity(new StringEntity(body, "utf-8"));}return httpClient.execute(request);}/*** Put stream* @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPut(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,byte[] body)throws Exception {HttpClient httpClient = wrapClient(host);HttpPut request = new HttpPut(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (body != null) {request.setEntity(new ByteArrayEntity(body));}return httpClient.execute(request);}/*** Delete** @param host* @param path* @param method* @param headers* @param querys* @return* @throws Exception*/public static HttpResponse doDelete(String host, String path, String method,Map<String, String> headers,Map<String, String> querys)throws Exception {HttpClient httpClient = wrapClient(host);HttpDelete request = new HttpDelete(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}return httpClient.execute(request);}private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {StringBuilder sbUrl = new StringBuilder();sbUrl.append(host);if (!StringUtils.isBlank(path)) {sbUrl.append(path);}if (null != querys) {StringBuilder sbQuery = new StringBuilder();for (Map.Entry<String, String> query : querys.entrySet()) {if (0 < sbQuery.length()) {sbQuery.append("&");}if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {sbQuery.append(query.getValue());}if (!StringUtils.isBlank(query.getKey())) {sbQuery.append(query.getKey());if (!StringUtils.isBlank(query.getValue())) {sbQuery.append("=");sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));}}}if (0 < sbQuery.length()) {sbUrl.append("?").append(sbQuery);}}return sbUrl.toString();}private static HttpClient wrapClient(String host) {HttpClient httpClient = new DefaultHttpClient();if (host.startsWith("https://")) {sslClient(httpClient);}return httpClient;}private static void sslClient(HttpClient httpClient) {try {SSLContext ctx = SSLContext.getInstance("TLS");X509TrustManager tm = new X509TrustManager() {public X509Certificate[] getAcceptedIssuers() {return null;}public void checkClientTrusted(X509Certificate[] xcs, String str) {}public void checkServerTrusted(X509Certificate[] xcs, String str) {}};ctx.init(null, new TrustManager[] { tm }, null);SSLSocketFactory ssf = new SSLSocketFactory(ctx);ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);ClientConnectionManager ccm = httpClient.getConnectionManager();SchemeRegistry registry = ccm.getSchemeRegistry();registry.register(new Scheme("https", 443, ssf));} catch (KeyManagementException ex) {throw new RuntimeException(ex);} catch (NoSuchAlgorithmException ex) {throw new RuntimeException(ex);}}
}

2.依赖

<!--快递查询使用的依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.15</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.2.1</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.2.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>org.eclipse.jetty</groupId><artifactId>jetty-util</artifactId><version>9.3.7.v20160115</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.5</version><scope>test</scope></dependency>

 后台控制层

@RequestMapping(value = "/selectall",method= RequestMethod.GET)public Map selectAll(@RequestParam(value = "exname")String exname,@RequestParam(value = "exid")String exid,@RequestParam(value = "phone")String phone){//        System.out.println("exname = " + exname);//
//        System.out.println("exid = " + exid);
//        System.out.println("phone = " + phone);Map hashMap = new HashMap();String host = "https://chakuaidi.market.alicloudapi.com/getinfo";String path = "/";String method = "POST";String appcode = "这是自己的";Map<String, String> headers = new HashMap<String, String>();//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105headers.put("Authorization", "APPCODE " + appcode);Map<String, String> querys = new HashMap<String, String>();querys.put("com", exname);querys.put("no", exid);querys.put("phone", phone);String bodys = "";//querys.put("com", "yto");快递公司简称//querys.put("no", "");快递单号//querys.put("phone", "0000");手机号后四位--我测试时这是非必须的try {
//            /**
//             * 重要提示如下:
//             * HttpUtils请从
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/src/main/java/com/aliyun/api/gateway/demo/util/HttpUtils.java
//             * 下载
//             *
//             * 相应的依赖请参照
//             * https://github.com/aliyun/api-gateway-demo-sign-java/blob/master/pom.xml
//             */HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);//System.out.println(response.toString());System.out.println("response = " + response);System.out.println("response.getEntity() = " + response.getEntity());String string = EntityUtils.toString(response.getEntity());System.out.println("string = " + string);hashMap.put("code","200");hashMap.put("msg","成功");hashMap.put("data",string);//获取response的body//System.out.println(EntityUtils.toString(response.getEntity()));}} catch (Exception e) {e.printStackTrace();}return hashMap;}

返回的数据类似于

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381618.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

小米笔记本 Pro 2022官宣发布时间 将于7月4日正式发布

在前面就有消息曝光了小米笔记本 Pro 2022的相关信息&#xff0c;但关于他的发布时间知道的人并不是很多&#xff0c;而在近日&#xff0c;小米官方官宣了小米笔记本 Pro 2022的发布时间&#xff0c;将于7月4日正式发布&#xff0c;下面来看看详细内容。 小米笔记本 Pro 2022官…

小米上市,现实很残酷,并没有那么多人暴富

小米上市&#xff0c;现实很残酷&#xff0c;并没有那么多人暴富 岳京杭 公众号&#xff1a;中产之路 本文首发于微信公共号&#xff1a; 中产之路 我的最新思考都会更新这里&#xff0c;你不妨关注一下 小米上市&#xff0c;那些年错过了的可以暴富的工作机会 一文中京杭君感叹…

【数学建模】逻辑回归算法(Logistic Resgression)

逻辑回归算法 简介逻辑回归与条件概率绘制sigmoid函数 简介 逻辑回归算法是一种简单但功能强大的二元线性分类算法。需要注意的是&#xff0c;尽管"逻辑回归"名字带有“回归”二字&#xff0c;但逻辑回归是一个分类算法&#xff0c;而不是回归算法。 我认为&#xff…

Dynamics 365 字段类型介绍

实体的本质是数据库表,所以每种字段类型都有自己对应的数据库类型。不同的类型也有自己不同的展示界面。 1 字段类型总览 Dynamics365中支持的类型如图,其在C#中对应的类型在括号中 文本类型:单行文本(string)、多行文本(string) 数字类型:整数(int)、浮点数(double)、十…

苹果复兴_类型复兴的故事:来自Type West的经验教训

苹果复兴 Last Fall, I began the 去年秋天&#xff0c;我开始 在旧金山的 Type West program at the Letterform档案库中 Letterform Archive in San Francisco. For those of you who don’t know, the Letterform Archive is creative heaven — a type nerd’s letter ar…

CTF·Crypto·古典密码大全

CTF赛事中Crypto里较为齐全的古典密码收录 共计39种密码及多个对应解密脚本 若有纰漏&#xff0c;烦请指出 NEFU-NSILAB下密码手总结&#xff0c;首发于校内bbs论坛 您也可以点击我的博客观看 0.究极奥义 解密方式 根据题目、描述、提示、图片锁定主题&#xff0c;找到主题下…

Tomcat juli 应用日志隔离原理解析

背景 最近在读 博多-舍费尔 著的《财务自由之路Ⅱ》&#xff0c;财务自由的确是一个很具诱惑力的目标&#xff0c;对于我这个连水果自由都没达到的人来说&#xff08;PS&#xff1a;公司楼底下有一个菜鲜果美超市&#xff0c;随便什么水果都是十几块一斤&#xff0c;普通的苹果…

二十九岁,刚读完了财富启蒙读物《小狗钱钱》

01、小狗钱钱 直白点说吧&#xff0c;我读《小狗钱钱》最主要目的是&#xff0c;不能在创造财富方面拖了女儿的后腿——假如女儿像这本书的小女主一样要理财&#xff0c;做为父母&#xff0c;咱不能嘲笑、不能阻拦。 之前已经读过了《小狗钱钱》的作者博多舍费尔的《财务自由…

《财务自由之路》读书笔记

目录 第一章、你真正想要的是什么第二章、责任意味着什么第三章、100万欧元是难以企及的奇迹吗第四章、为什么没有更多的人变得富有第五章、你关于金钱的想法是什么第六章、债务第七章、如何增加自己的收入第八章、储蓄—支付自己第九章、复利的奇迹第十章、你为什么必须饲养金…

程序员别再迷茫,赚钱,方法比你想的更多

每次打开公号&#xff0c;扑面而来一阵阵焦虑&#xff1a; 95后毕业3个月就买房&#xff0c;你的同龄人正在抛弃你 毕业3年&#xff0c;年薪超100万&#xff1a;赚钱&#xff0c;是一种修行 一线城市财务自由门槛2.9亿&#xff0c;看看你还差多少 说来说去就是&#xff0c;牛人…

ラーメン用語10選

店内には開花楼の麺箱。およそ&#xff11;&#xff10;分で着丼。開花楼のつけ麺ならば、太麺かと思いきや、ストレートの中太麺で、しかも加水率高めと意外な展開だ。 上のレビューの意味が、ツルっと頭に入ってきますでしょうか&#xff1f;ヘビーユーザーが多いラーメンファ…

bugku-writeup-Crypto-你喜欢下棋吗

题目&#xff1a;你喜欢下棋吗 01—棋盘码解码Polybius Square Cipher 使用波利比奥斯方阵密码加密/解密工具http://www.atoolbox.net/Tool.php?Id913&accsdn&#xff0c;需要数字两个一组改变前后位置才可以得到正确的密码&#xff0c;得到密码之后输入密码&#xff0c;打…

奔向财富自由之路的10条建议

这是山猫的第31篇原创 [德国] 博多舍费尔 著 01 心态开放 对待金钱要有个开放的心态&#xff0c;谈钱不伤感情&#xff0c;不谈钱饿肚子&#xff0c;你选择哪一个&#xff0c;在我们能力范围之内&#xff0c;要大胆追求财富&#xff0c;至少这个世界绝大多数人还没到达财富自由…

《财务自由之路》博多.舍费尔 篇一,关于金钱和财务自由

本章讨论对于金钱的观点&#xff0c;以及欲获取金钱所要做的思想准备 人世间的苦难大部分都是钱不够用造成的 tip: 本书介绍的&#xff0c;变得富有的其中一种途径 储蓄一定资金使用储蓄进行投资提高自己的收入从加薪中提取一定比例再储蓄 真正想要的是什么 我们每个人的经历…

财富自由之路-博多.舍费尔

* 博多.舍费尔* 德国理财大师&#xff0c;1960生于德国。欧洲知名亿万富翁 * 核心内容* 穷人和富人的差距主要体现在对待财富的观念和原则上 * 改变方式* 明确定义&#xff1a;明确数字&#xff0c;用笔记录下来&#xff0c;转化为画面。在潜意识下是一个具体的场景&#xff0c…

[oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear

teletypewriter 历史 回忆上次内容 上次见到了一个真的机械打字机 感受到了蒸汽朋克的时代背景 上上次区分了一些概念 terminal终端&#xff0c;电脑连线最终的端点TeleTYpewriter&#xff0c;电传打印机&#xff0c;终端硬件shell&#xff0c;终端硬件基础上的软件壳子Conso…

编码--博多码(1874年)

2019独角兽企业重金招聘Python工程师标准>>> 博多码 法国人埃米尔‧博多于1874年发明的“印字电报机”,发报方通过一个类似于钢琴键盘样的装置输入报文。该装置上面有5个键,发报者的左手控制2个键,右手控制另外3个键。这样5个键在某个时刻的各自的按下/复原状态,…

为了博多

P2414 - 为了博多 Description 做了个噩梦&#xff0c;梦见我的 n 把刀到60级会二次变身&#xff0c;变成一个 对推6图有xi点贡献&#xff0c;刷大阪城有yi点贡献 的刀&#xff0c;于是要把刀分成两队一队刷大阪城另一队推6图 。 但是有m对兄弟刀在同一队会有特殊的buff加成&a…

vue+springboot基于web的火车高铁铁路订票管理系统

铁路订票管理系统按照权限的类型进行划分&#xff0c;分为用户和管理员两个模块。管理员模块主要针对整个系统的管理进行设计&#xff0c;提高了管理的效率和标准。主要功能包括个人中心、用户管理、火车类型管理、火车信息管理、车票预订管理、车票退票管理、系统管理等&#…

云服务器win系统下架设手游白日门传奇详细教程

1、首先准备云服务器一台&#xff0c;配置为最低为2核4G 1M宽带 2、系统选择windos2008 64位 3、安装vc运行库 4、下载服务端相关文件&#xff1a;下载地址&#xff1a;传奇手游2021【最新白日门兄弟传奇】手工GM工具文本教程-极狐资源网 解压服务端 brm.rar 到d盘目录…