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日

相关文章

  • C#拼图游戏编写代码(2)

    下面详细讲解如何编写C#拼图游戏的代码,具体分为以下步骤: 1. 创建WinForm窗口 代码中首先需要创建一个WinForm窗口,作为整个游戏的主界面。 public partial class FormMain : Form { public FormMain() { InitializeComponent(); } } 2. 添加拼图图片并进行切割 接…

    C# 2023年5月15日
    00
  • JS、CSS和HTML实现注册页面

    下面是关于“JS、CSS和HTML实现注册页面”的完整攻略: 1.确定页面设计 在开始实现注册页面之前,我们需要先确定页面设计。包括布局、元素的排列和样式等方面。可以利用工具软件或者手绘草稿来完成页面设计。 2.HTML结构与元素 经过页面设计之后,我们就可以开始构建HTML结构和元素了。在这个过程中,我们需要考虑页面元素和布局,比如表单、按钮等。 以下示例…

    C# 2023年5月31日
    00
  • ASP.NET Core配置文件的获取和设置

    ASP.NET Core配置文件的获取和设置 在ASP.NET Core应用程序中,我们经常需要使用配置文件来存储应用程序的配置信息。本攻略将详细介绍如何获取和设置ASP.NET Core配置文件。 获取配置文件 我们可以使用ASP.NET Core中的Configuration API来获取配置文件。我们可以使用以下代码来获取配置文件: using Mic…

    C# 2023年5月17日
    00
  • C#监控文件夹变化的方法

    下面我将为你详细讲解“C#监控文件夹变化的方法”的完整攻略。 1. 使用FileSystemWatcher类 在C#中,我们可以使用FileSystemWatcher类来监听特定文件夹的变化。使用方法如下: // 实例化一个FileSystemWatcher对象 FileSystemWatcher watcher = new FileSystemWatche…

    C# 2023年6月1日
    00
  • C#异步编程之async/await详解

    C#异步编程之async/await详解 简介 异步编程是现代编程中不可避免的一部分,它允许我们编写高性能和更加流畅的应用。C#中的async/await关键字是一种优雅的方式来处理异步操作,这篇文章将着重详解这一特性。 async和await是什么? async是一个修饰符,用于修饰一个方法,表示这个方法是异步方法。 await是一个操作,用于让方法等待另…

    C# 2023年5月15日
    00
  • C#中的Socket编程详解

    C#中的Socket编程详解 一、Introduction Socket是网络通信中的核心技术,也是C#中网络编程最基本的数据通信方式。通过Socket,我们可以在C#中实现基础的网络通信,如客户端和服务器之间的数据传输。本文将详细讲解C#中的Socket编程,帮助读者快速掌握Socket的使用方法。 二、Socket的基本概念 Socket是网络编程中一个…

    C# 2023年5月31日
    00
  • C# byte数组与Image相互转换的方法

    C# byte数组与Image相互转换的方法: 将byte数组转换为Image: 创建MemoryStream对象并传入byte数组,将其转换为流。 使用Image.FromStream()方法来创建Image对象,并将MemoryStream作为参数传入。 示例代码: byte[] imageBytes = File.ReadAllBytes("…

    C# 2023年6月7日
    00
  • C#中DataTable实现筛选查询的示例

    下面是关于“C#中DataTable实现筛选查询的示例”的完整攻略。 1. DataTable简介 DataTable是C#中常用的数据表结构,类似于SQL中的表格。它可以存储多行数据,每行有多个列,每列对应一种数据类型。DataTable提供了许多方法和属性用于访问和操作数据。 2. DataTable实现筛选查询 在DataTable中,可以使用Sele…

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