C#实现快递api接口调用方法

C#实现快递API接口调用方法

在使用快递API时,我们需要通过接口调用获取物流信息。本文将介绍如何使用C#实现快递API的接口调用。

步骤

1.注册快递API并获取API key

首先,我们需要在快递API平台上注册并获取API key。需要注意,在不同快递公司的API接口中,需要使用其对应的API key,否则将无法获取物流信息。

2.创建C#项目并引入RestSharp库

使用Visual Studio等工具创建一个C#项目,并在项目中引入RestSharp库。RestSharp库是一个REST类型的API发送工具,它支持多种数据格式的解析,并提供简洁方便的API接口,常被用于API接口调用。

3.构建API请求URL及相关参数

根据快递公司API接口文档,构建API请求URL及相关参数。以顺丰速运API接口为例,其物流信息API请求URL为:

https://open-sbox.sf-express.com/rest/v1.0/route/queryWaybillInfo/{tracking_number}

其中,{tracking_number} 是需要替换成物流运单号。

4.构建API请求参数

构建API请求参数并使用RestSharp库进行请求发送。以顺丰速运API接口为例,其请求参数需要包含以下信息:

{
  "tracking_number": "SF1012345678910",
  "tracking_type": "1",
  "method_type": "2"
}

其中,tracking_number为物流运单号,tracking_type为查询类型,method_type为接口调用方式。

RestSharp库的使用示例代码如下:

var client = new RestClient("https://open-sbox.sf-express.com");
var request = new RestRequest("rest/v1.0/route/queryWaybillInfo/{tracking_number}", Method.GET);
request.AddParameter("tracking_number", "SF1012345678910", ParameterType.UrlSegment);
request.AddParameter("tracking_type", "1");
request.AddParameter("method_type", "2");
IRestResponse response = client.Execute(request);
var content = response.Content;

其中,RestClient用于设置API请求地址,RestRequest用于设置API请求参数,Execute方法用于发送请求并获取响应信息,Content为响应内容。

5.解析API响应信息

根据API接口文档,解析API响应信息并进行需求处理。以顺丰速运API接口为例,其返回的物流运单信息为JSON格式,格式示例为:

{
  "head": {
    "code":"EXCODE201",
    "message":"请求成功"
  },
  "body": {
    "orderid":"123456789",
    "mailno":"957347643791",
    "companytype":"",
    "exp_type":"1",
    "data":{
      "waybill_no":"957347643791",
      "mailno":"957347643791",
      "order_status":"已发货",
      "remark":"",
      "sortation":"",
      "accept_time":"2021-01-10 08:00:00",
      "accept_address":"广东省深圳市龙华区",
      "opcode":"",
      "operator":"",
      "man":0,
      "tel":""
    }
  }
}

其中,head为API请求结果头信息,body为API请求结果主体信息。根据实际需求进行响应信息解析。

示例

示例1:使用顺丰速运API接口查询物流信息

以查询单号为SF1012345678910的运单信息为例,使用RestSharp库实现接口调用及信息解析的代码示例为:

var client = new RestClient("https://open-sbox.sf-express.com");
var request = new RestRequest("rest/v1.0/route/queryWaybillInfo/{tracking_number}", Method.GET);
request.AddParameter("tracking_number", "SF1012345678910", ParameterType.UrlSegment);
request.AddParameter("tracking_type", "1");
request.AddParameter("method_type", "2");
IRestResponse response = client.Execute(request);
var content = response.Content;

if (!string.IsNullOrWhiteSpace(content))
{
    JObject responseContent = JObject.Parse(content);
    string message = (string)responseContent["head"]["message"];
    if (message == "请求成功")            
    {
        JToken data = responseContent["body"]["data"];
        string orderStatus = (string)data["order_status"];
        string acceptAddress = (string)data["accept_address"];
        Console.WriteLine("订单状态:" + orderStatus);
        Console.WriteLine("收货地址:" + acceptAddress);
    }
    else
    {
        Console.WriteLine("调用接口失败:" + message);
    }
}
else
{
    Console.WriteLine("调用API接口失败");
}

其中,JObject用于解析响应内容JSON格式的信息,输出的信息为该物流单的状态和收货地址。

示例2:使用圆通速递API接口查询物流信息

以查询单号为800000000000的运单信息为例,使用RestSharp库实现接口调用及信息解析的代码示例为:

var client = new RestClient("https://api.yto.net.cn");
var request = new RestRequest("service/yto/SandboxCommonQueryService", Method.POST);
request.AddParameter("charset", "UTF-8");
request.AddParameter("partnerId", "YOUR_PARTNER_ID");
request.AddParameter("sign", "YOUR_SIGN");
request.AddParameter("customerId", "YOUR_CUSTOMER_ID");
request.AddParameter("type", "COMMON_QUERYSERVICE");
request.AddParameter("data", "{\"orderType\":\"\",\"orderNo\":\"800000000000\"}");
IRestResponse response = client.Execute(request);
var content = response.Content;

if (!string.IsNullOrWhiteSpace(content))
{
    JObject responseContent = JObject.Parse(content);
    JObject success = (JObject)responseContent["success"];
    if (success != null)            
    {
        string statusCode = (string)success["statusCode"];
        JToken traces = (JToken)success["traces"];
        if (traces != null && traces.Count() > 0)
        {
            JObject trace = (JObject)traces.First();
            DateTime acceptTime = (DateTime)trace["acceptTime"];
            string acceptStation = (string)trace["acceptStation"];
            Console.WriteLine("下单时间:" + acceptTime);
            Console.WriteLine("揽收信息:" + acceptStation);
        }
        else
        {
            Console.WriteLine("未查询到物流记录");
        }
    }
    else
    {
        string msg = (string)responseContent["msg"];
        Console.WriteLine("调用接口失败:" + msg);
    }
}
else
{
    Console.WriteLine("调用API接口失败");
}

其中,解析圆通速递API接口返回的响应信息使用了Newtonsoft.Json包。输出的信息为物流信息中第一条记录的接收信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现快递api接口调用方法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • asp.net core为IHttpClientFactory添加动态命名配置

    ASP.NET Core为IHttpClientFactory添加动态命名配置攻略 在ASP.NET Core中,我们可以使用IHttpClientFactory来创建和管理HttpClient实例。在某些情况下,我们需要为不同的HttpClient实例提供不同的配置。本攻略将介绍如何为IHttpClientFactory添加动态命名配置,并提供两个示例说明…

    C# 2023年5月17日
    00
  • WinForm相对路径的陷阱

    WinForm相对路径的陷阱是指在Windows窗体应用程序中使用相对路径时可能会遇到的问题。在WinForm应用程序中,使用相对路径可以方便地引用外部文件,例如资源文件、配置文件、图片等,但是如果不注意一些细节,就会出现问题。下面是WinForm相对路径的完整攻略。 1. 了解相对路径和绝对路径 在开始之前,我们需要了解相对路径和绝对路径的概念。相对路径是…

    C# 2023年6月1日
    00
  • C# TextBox多行文本框的字数限制问题

    关于C#多行文本框的字数限制问题,我们可以通过代码实现两种方法:使用MaxLength属性和自定义字符串截取方法。 使用MaxLength属性 首先,我们需要在窗体中添加一个多行文本框控件(TextBox),在属性窗口中找到MaxLength属性,这个属性表示在多行文本框中可以输入的最大长度。我们可以将其设置为我们需要的最大长度,比如说100: textBo…

    C# 2023年5月15日
    00
  • asp.net iis 无法显示网页的解决方法分析

    当使用ASP.NET和IIS部署网站时,有时会遇到无法显示网页的问题。这可能是由于多种原因引起的,例如配置错误、权限问题、网络问题等。本文将提供一个ASP.NET和IIS无法显示网页的解决方法分析,包括两个示例。 解决方法分析 检查IIS配置 首先,我们需要检查IIS的配置是否正确。可以按照以下步骤检查IIS配置: 打开IIS管理器。 在左侧面板中选择“网站…

    C# 2023年5月15日
    00
  • win7中iis7.5中没有http绑定类型的解决方法

    win7中iis7.5中没有http绑定类型的解决方法 在Windows 7中,IIS 7.5是一种常用的Web服务器,用于托管和管理Web应用程序。有时,我们可能会遇到“没有HTTP绑定类型”的问题,这可能会导致Web应用程序无法正常运行。本文将提供详细的“win7中iis7.5中没有http绑定类型的解决方法”的完整攻略,包括如何添加HTTP绑定类型、如…

    C# 2023年5月15日
    00
  • C#自定义函数NetxtString生成随机字符串

    下面就为大家讲解一下如何在C#中自定义函数NetxtString生成随机字符串。 1、概述 NetxtString是一个C#字符串扩展类,提供了生成随机字符串的方法,可以指定生成字符串的长度和字符集。下面是该类的源码: public static class NetxtString { private static Random random = new R…

    C# 2023年5月31日
    00
  • redis缓存数据库中数据的方法

    Redis缓存数据库中数据的方法 Redis 是一种高性能的缓存数据库,它支持多种数据结构和操作,可以用于缓存、消息队列、分布式锁等场景。本攻略将介绍 Redis 缓存数据库中数据的方法,包括数据的添加、查询、修改和删除等操作。 连接 Redis 在进行 Redis 操作之前,需要先连接 Redis 数据库。可以使用 StackExchange.Redis …

    C# 2023年5月17日
    00
  • C#开发Winform实现文件操作案例

    下面是详细的攻略: C#开发Winform实现文件操作案例 一、Windows Forms程序基础 首先,我们需要先了解Windows Forms程序的基础知识,包括如何创建基本的Winform应用程序、如何添加各种控件和窗体等等。这里就不详细阐述了,大家可以自行查阅相关教程进行学习。 二、文件操作的基本概念 在Winform应用程序中,经常需要对文件进行操…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部