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技术站