快递查询API

来源:互联网 发布:java短信接口要钱吗 编辑:程序博客网 时间:2024/04/29 06:05

使用快递的接口,之前是为了做公众号,用户输入订单号,微信后台进行查询并反馈给微信用户,可以收到关于此单号的物流信息情况,以此目的才写了这篇博客,希望可以帮助到大家。

若有转载,请注明来自Coolspan: http://blog.csdn.net/qxs965266509,谢谢大家的支持.


快递查询接口

提供开发者平台查询快递接口的公司有:

  • 快递鸟
  • Trackingmore
  • 快递网API
  • 快递100

快递鸟,支持全球400余家快递物流公司接口,请求Api接口是不限制次数的哟,并且永久免费

如果你的请求次数很少可以考虑其他家,反之,请求量大,快递鸟免费Api就是很不错的选择。

点击免费申请快递鸟APIKey授权才能做对接,申请后加他们技术支持QQ群很快就能对接

下面是以快递100提供的开发者接口进行展开,如有错误,请指正并及时修改。

首先,申请一个快递100的账号;
然后进入http://www.kuaidi100.com/openapi/界面点击免费申请,免费申请的接口每天接口的请求次数都是有限制的,如果不想被限制,可能就得考虑商务合作或者另求它处。

按照申请流程一步步做完后,静等审核通过。
调用频率选择 2000次/每天,邮箱必须正确,因为审核通过后会给你发送邮件,邮件内容会有请求接口使用的key密钥,不通过会告知你具体什么原因导致不通过。


使用

案例分为3个

  • 使用的是Chrome的postman插件进行Api测试调用
  • 使用Nodejs环境进行快递查询
  • 在Android使用快递接口查询

打开http://www.kuaidi100.com/openapi/api_post.shtml查看Api接口定义文档,了解url、请求参数及响应数据。
主要对运单查询API进行讲解测试.

API URL 所支持的快递公司及参数说明
支持的国际类快递及参数说明

这里写图片描述
这里写图片描述

使用postman查询

填写请求url及请求参数,下方就是响应的数据,看效果:
这里写图片描述


Nodejs查询订单

请求:

/** * Created by Coolspan on 2016/5/18. */var ajax = require("./ajax.js")ajax.ajax({    type: "POST",    url: "http://api.kuaidi100.com/api",    data: {        id: "28a3e64ebad725d5",        com: "tiantian",        nu: "666509962436",        show: 0,        muti: 1,        order: "desc"    },    success: function (data) {        var orderInfo = JSON.parse(data);        console.log(orderInfo)    }})

ajax.js –>

var https = require("https");var http = require("http");var Url = require("url");var querystring = require('querystring');// 默认值var defaultSetting = {    // 如果返回false可以取消本次请求    beforeSend: function (req) {    },    complete: function (req) {    },    data: '', // Object, String    dataType: 'JSON',    error: function () {    },    headers: {}, // {k:v, ...}    statusCode: {},    success: function (data) {    },    timeout: 10,    type: 'GET', // GET, POST    url: "www.baidu.com"};/** * */function ajax(settings) {    // ajaxlbs.js(settings)    if (typeof settings === "object") {        // 处理默认值继承        // todo ...        for (key in defaultSetting) {            if (settings[key] == null) {                settings[key] = defaultSetting[key];            }        }    }    var params = Url.parse(settings.url, true);    // params 解析出来的参数如下    // {    // "protocol":"http:",    // "slashes":true,    // "host":"localhost:3000",    // "port":"3000",    // "hostname":"localhost",    // "href":"http://localhost:3000/?d=1",    // "search":"?d=1",    // "query":{"d":"1"},    // "pathname":"/",    // "path":"/?d=1"    // }    var options = {        host: params.hostname,        port: params.port || 80,        path: params.path,        method: settings.type    };    if (settings.data != null) {        options.path += "?"        for (var key in settings.data) {            options.path = options.path + "&" + key + "=" + settings.data[key];        }        console.log(options.path);    }    var httpUnity = http;    if (params.protocol == "https:") {        options.port = 443;        var httpUnity = https;    }    var req = httpUnity.request(options,function (res) {        var data = '';        res.on('data',function (chunk) {            data += chunk;        }).on('end', function () {                if (settings.dataType === "json") {                    try {                        data = JSON.parse(data);                    } catch (e) {                        data = null;                    }                }                settings.success(data);                settings.complete(req);            });    }).on('error', function (e) {            settings.error(e);        });//    if (typeof settings.beforeSend === "function") {//        if (!settings.beforeSend(req)) {//            settings.complete(req);//            req.end();//            return false;//        }//    }    if (settings.type === "POST") {        var dataStr = querystring.stringify(settings.data);        req.setHeader("Content-Length", dataStr.length);        req.write(dataStr);    }    req.setTimeout(settings.timeout);    req.end();}exports.ajax = ajax;

ps: ajax.js和请求接口的代码都是放在同一层目录的,如果目录接口不对,请修改require中的路径。

结果如图所示:
这里写图片描述


Android查询快递

使用的网络库是Google‘Volley’

package cn.coolspan.andframe1;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import com.android.volley.AuthFailureError;import com.android.volley.Request;import com.android.volley.Response;import com.android.volley.VolleyError;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import java.util.HashMap;import java.util.Map;/** * Coolspan */public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                next();            }        });    }    private void next() {        StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://api.kuaidi100.com/api",                new Response.Listener<String>() {                    @Override                    public void onResponse(String response) {                    }                }, new Response.ErrorListener() {            @Override            public void onErrorResponse(VolleyError error) {            }        }) {            @Override            protected Map<String, String> getParams() throws AuthFailureError {                Map<String, String> params = new HashMap<String, String>();                params.put("id", "28a3e64ebad725d5");                params.put("com", "tiantian");                params.put("nu", "666509962436");                params.put("show", "0");                params.put("muti", "1");                params.put("order", "desc");                return params;            }        };        Volley.newRequestQueue(this).add(stringRequest);    }}

0 0
原创粉丝点击