java 调用阿里云中通快递查询示例

获取接口的使用权限

首先在阿里云市场找到地址:https://market.aliyun.com/products/57126001/cmapi023201.html

 点击立即购买即可免费获得试用权限。

获取密钥的三种方式

查看密钥方式1:可以直接在购买完成后查看

 查看密钥方式2:可以在地址页面右上角买家中心-控制台查看

 查看密钥方式3:可以直接打开控制台地址,https://market.console.aliyun.com/

 以上可以直接复制可用

接口调用

调用地址:http(s)://wdexpress.market.alicloudapi.com/gxali

请求方式:GET

返回类型:JSON

请求参数

名称

类型

是否必须

描述

n

STRING

必选

快递单号

t

STRING

可选

可不填,自动识别,这里调用中通快递使用t=zto

示例代码

package com.aliyun.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;

public class Tools {
    public static void main(String[] args) {
        String host = "https://wdexpress.market.alicloudapi.com"; 
        String path = "/gxali"; 
        String appcode = "你自己的AppCode"; 
        String t = "ZTO"; 
        String n = "780098068058";
        String urlSend = host + path + "?n=" + n + "&t="+ t; 
        try {
            URL url = new URL(urlSend);
            HttpURLConnection httpURLCon = (HttpURLConnection) url.openConnection();
            httpURLCon.setRequestProperty("Authorization", "APPCODE " + appcode);
            int httpCode = httpURLCon.getResponseCode();
            if (httpCode == 200) {
                String json = read(httpURLCon.getInputStream());
                System.out.println("正常请求计费(其他均不计费)");
                System.out.println("获取返回的json:");
                System.out.print(json);
            } else {
                Map<String, List<String>> map = httpURLCon.getHeaderFields();
                String error = map.get("X-Ca-Error-Message").get(0);
                if (httpCode == 400 && error.equals("Invalid AppCode `not exists`")) {
                    System.out.println("AppCode错误 ");
                } else if (httpCode == 400 && error.equals("Invalid Url")) {
                    System.out.println("请求的 Method、Path 或者环境错误");
                } else if (httpCode == 400 && error.equals("Invalid Param Location")) {
                    System.out.println("参数错误");
                } else if (httpCode == 403 && error.equals("Unauthorized")) {
                    System.out.println("服务未被授权(或URL和Path不正确)");
                } else if (httpCode == 403 && error.equals("Quota Exhausted")) {
                    System.out.println("套餐包次数用完 ");
                } else if (httpCode == 403 && error.equals("Api Market Subscription quota exhausted")) {
                    System.out.println("套餐包次数用完,请续购套餐");
                } else {
                    System.out.println("参数名错误 或 其他错误");
                    System.out.println(error);
                }
            }

        } catch (MalformedURLException e) {
            System.out.println("URL格式错误");
        } catch (UnknownHostException e) {
            System.out.println("URL地址错误");
        } catch (Exception e) {
            // 打开注释查看详细报错异常信息
            // e.printStackTrace();
        }

    }

    /*
     * 读取返回结果
     */
    private static String read(InputStream is) throws IOException {
        StringBuffer sb = new StringBuffer();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String line = null;
        while ((line = br.readLine()) != null) {
            line = new String(line.getBytes(), "utf-8");
            sb.append(line);
        }
        br.close();
        return sb.toString();
    }
}

调用返回

{
    "LogisticCode":"780098068058",
    "ShipperCode":"ZTO",
    "Traces":[
        {
            "AcceptStation":"【广州市】 【广州花都】(020-37738523) 的 马溪 (18998345739) 已揽收",
            "AcceptTime":"2018-03-07 00:01:55"
        },
        {
            "AcceptStation":"【广州市】 快件离开 【广州花都】 发往 【石家庄中转】",
            "AcceptTime":"2018-03-07 00:40:57"
        },
        {
            "AcceptStation":"【广州市】 快件到达 【广州中心】",
            "AcceptTime":"2018-03-07 01:36:53"
        },
        {
            "AcceptStation":"【广州市】 快件离开 【广州中心】 发往 【石家庄】",
            "AcceptTime":"2018-03-07 01:38:45"
        },
        {
            "AcceptStation":"【石家庄市】 快件到达 【石家庄】",
            "AcceptTime":"2018-03-08 21:00:44"
        },
        {
            "AcceptStation":"【石家庄市】 快件离开 【石家庄】 发往 【长安三部】",
            "AcceptTime":"2018-03-08 23:43:44"
        },
        {
            "AcceptStation":"【石家庄市】 快件已到达 【长安三部】(0311-85344265),业务员 容晓光(13081105270) 正在第1次派件, 请保持电话畅通,并耐心等待",
            "AcceptTime":"2018-03-09 09:03:10"
        },
        {
            "AcceptStation":"【石家庄市】 快件已在 【长安三部】 签收,签收人: 本人, 感谢使用中通快递,期待再次为您服务!",
            "AcceptTime":"2018-03-09 11:59:26"
        }
    ],
    "State":"3",
    "Success":true,
    "Courier":"容晓光",
    "CourierPhone":"13081105270",
    "updateTime":"2019-08-27 13:56:19",
    "takeTime":"2天20小时14分",
    "Name":"中通快递",
    "Site":"www.zto.com",
    "Phone":"95311",
    "Logo":"https://img3.fegine.com/express/zto.jpg",
    "Reason":"查询成功"
}

返回的信息还是非常全面的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Java调用阿里云短信接口的步骤: 1. 首先,你需要在阿里云官网注册并创建一个短信服务。你可以参考阿里云官网提供的文档来了解如何创建短信服务。 2. 在你的Java项目中,你需要引入阿里云短信SDK的依赖。你可以在Maven项目中的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <version>2.0.6</version> </dependency> ``` 3. 在你的Java代码中,你需要导入阿里云短信SDK的相关类和方法。例如: ```java import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile; import com.aliyuncs.sms.model.v20170525.*; ``` 4. 创建一个DefaultAcsClient对象,并设置好AccessKey和SecretKey。例如: ```java String accessKeyId = "your_access_key_id"; String accessKeySecret = "your_access_key_secret"; IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret); DefaultAcsClient client = new DefaultAcsClient(profile); ``` 5. 构造一个SendSmsRequest对象,并设置好短信相关的参数,例如短信签名、模板ID、手机号码和模板参数。例如: ```java SendSmsRequest request = new SendSmsRequest(); request.setSignName("your_sign_name"); request.setTemplateCode("your_template_code"); request.setPhoneNumbers("your_phone_number"); request.setTemplateParam("{\"code\":\"123456\"}"); ``` 6. 调用client的sendSms方法发送短信,并处理发送结果。例如: ```java try { SendSmsResponse response = client.getAcsResponse(request); if (response.getCode() != null && response.getCode().equals("OK")) { System.out.println("短信发送成功"); } else { System.out.println("短信发送失败,错误码:" + response.getCode()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } ``` 请注意,以上代码仅为示例,你需要根据你的实际情况进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值