[初学C#] 第二习题 : 快递跟踪信息查询
刚学C#, 折腾的一个小玩意. 熟悉和了解C#这门编程语言. 没有啥特殊意义
解锁技能
- System.Net 的 WebRequest等http请求
- Newtonsoft.Json 这个第三方类库, 序列号与反序列号JSON
第三方类库到”工具->NuGet包管理->管理解决方案包…” 查询”JSON.NET”
解锁技能 “vs死丢丢解决方案包管理”
using System;
using System.Text;
using System.Net;
using System.IO;
using Newtonsoft.Json;
namespace Kuaidi100
{
public class JsonAutoComNum_Auto
{
//{"comCode":"rufengda","id":"","noCount":276344,"noPre":"117082","startTime":""}
public string comCode, noPre, startTime, id;
public int noCount;
}
public class JsonAutoComNum
{
//{"comCode":"","num":"117082212900994501","auto":[{"comCode":"dhl","id":"","noCount":1,"noPre":"117082","startTime":""}]}
public string comCode;
public string num;
public JsonAutoComNum_Auto[] auto = new JsonAutoComNum_Auto[0];
}
public class JsonQuery
{
//{"message":"ok","nu":"117082212900994501","ischeck":"1","condition":"F00","com":"rufengda","status":"200","state":"3", "data":[]}
public string message, nu, ischeck, condition, com, status, state;
public JsonQuery_Data[] data = new JsonQuery_Data[0];
}
public class JsonQuery_Data
{
//{"time":"2017-08-23 13:34:21","ftime":"2017-08-23 13:34:21","context":"运单已送达成功 ","location":""}
public string time, ftime, context, location;
}
class Program
{
static void Main(string[] args)
{
string nu = "117082212900994501";//运单编号
//创建请求
WebRequest get = WebRequest.Create("http://www.kuaidi100.com/autonumber/autoComNum?text=" + nu);
get.Method = "get";
//发送并取回响应内容
WebResponse response = get.GetResponse();
string responseStr = new StreamReader(response.GetResponseStream()).ReadToEnd(); //结果转换到string
response.Close();
//json字符串解析为对象
JsonAutoComNum json = JsonConvert.DeserializeObject<JsonAutoComNum>(responseStr);
Console.WriteLine(responseStr);
string type = json.comCode == "" ? json.auto[0].comCode : json.comCode;//自动判定快递公司代码没有, 从可能是快递公司列表中选取[0]
WebRequest post = WebRequest.Create("http://www.kuaidi100.com/query");
//组合参数
string postData = string.Format("type={0}&postid={1}&id={2}&valicode={3}&temp={4}", type, nu, "1", "", "0.396747639110379");
byte[] data = Encoding.ASCII.GetBytes(postData);
//协议头/参数等
post.Method = "post";
post.ContentType = "application/x-www-form-urlencoded";
post.ContentLength = data.Length;
post.GetRequestStream().Write(data, 0, data.Length);
response = post.GetResponse();
responseStr = new StreamReader(response.GetResponseStream()).ReadToEnd(); //结果转换到string
//结果字符串转换为JsonQuery对象
JsonQuery query = JsonConvert.DeserializeObject<JsonQuery>(responseStr);
//格式输出
Console.WriteLine(string.Format("查询结果:{0}\n运单编号:{1}\n快递公司:{2}\n快递状态:{3}", query.message, query.nu, query.com, query.state));
for (int i = 0; i < query.data.Length; i++)
{
Console.WriteLine(string.Format("{0} --- {1}", query.data[i].time, query.data[i].context));
}
Console.ReadKey();
}
}
}
写在最后的思考
没想到vs死丢丢内置一个类库市场(NuGet包管理器), 很方便. 一开始我以为第三方类库都要一个一个去百度下载…
另外一个就是, 目前就用过Newtonsoft.Json这个JSON类库. 原来还需要声明一个用做映射json的类. 不能像js那样直接访问对象(这个对象需要自己创造, 然后映射绑定字段). 或者直接用方法获取 json.getValue(“成员[0].姓名”); 这样. (可能其他库支持)
每天进步一点点
[初学C#] 第二习题 : 快递跟踪信息查询的更多相关文章
- php快递单号查询源码
贴下记录下php查询快递单号的源码,能查询各种快递的快递单号记录,中通.圆通快递.顺丰快递等都不是问题.只需要在 爱快递(www.aikuaidi.cn)上面申请一个快递key即可,下面把源码分享下, ...
- 快递单号查询免费api接口(PHP示例)
快递单号查询API,可以对接顺丰快递查询,邮政快递查询,中通快递查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等快递物流服务.对于电商企业,ERP服务企业,集成此接口到自己的软 ...
- java抓取快递100信息接口
package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...
- C#快递跟踪(基于快递100深度定制)
本文主要介绍快递跟踪的相关信息.如根据快递单号预测所属快递公司,判断快递是否已被签收,以及改良官方model后可在不用申请授权的情况下实现json,html,xml及text等多种格式以及单行多行,降 ...
- C语言身份证信息查询系统(修改版)
很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...
- ajax实现快递单号查询
效果:(代码写的有点乱,自行修改就可以了) 源码: index.php <!DOCTYPE html> <html lang="en"> <head& ...
- 中通快递单api查询
request POST https://hdgateway.zto.com/WayBill_GetDetail HTTP/1.1Host: hdgateway.zto.comConnection: ...
- ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
- ECSHOP和SHOPEX快递单号查询顺丰插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
- ECSHOP和SHOPEX快递单号查询申通插件V8.6专版
发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...
随机推荐
- linux DNS域名解析
目录 一.DNS概念 二.域名格式类型 三.查询类型 四.解析类型 五.配置DNS 六.dns解析实验 1.配置正向解析 2.反向解析 3.主从解析 一.DNS概念 概念:域名和IP地址的相互映射的分 ...
- Python基础 - 比较运算符
以下假设变量a为10,变量b为20: 运算符 描述 实例 == 等于 - 比较对象是否相等 (a == b) 返回 False. != 不等于 - 比较两个对象是否不相等 (a != b) 返回 tr ...
- 聊聊分布式解决方案Saga模式
Saga模式 Saga模式使用一系列本地事务来提供事务管理,而一个本地事务对应一个Saga参与者,在Saga流程里面每一个本地事务只操作本地数据库,然后通过消息或事件来触发下一个本地事务,如果其中一个 ...
- Odoo-----计算字段、depnds,onchange 机制、模型约束
1 计算字段和默认值问题 字段通过调用模型的方法的实时计算获得,一般都是 compute 属性为主的方法,这个计算方法通过计算self每条记录设置的的值,self 是一个有记录的有序集合,支持py ...
- jenkins中的坑_CreateProcess error=1392
环境:windows11,jdk1.8,jenkins_2.346.war 起因 最近在使用jenkins部署项目的时候,填写仓库的url地址时,发现填完后报500这个错误,于是我打开jenkins的 ...
- Kotlin协程-那些理不清乱不明的关系
Kotlin的协程自推出以来,受到了越来越多Android开发者的追捧.另一方面由于它庞大的API,也将相当一部分开发者拒之门外.本篇试图从协程的几个重要概念入手,在复杂API中还原出它本来的面目,以 ...
- mysql索引优化-01
1.1索引是什么? mysql官方对于索引的定义:可以帮助mysql高效的获取数据的数据结构. mysql在存储数据之外,数据库系统中还维护着满足特定查找算法的数据结构,这些数据结构给以某种引 ...
- Python运维开发之路《编程》
一.编程思想介绍 1.编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现 ...
- ASP.NET Core 6框架揭秘实例演示[42]:检查应用的健康状况
现代化的应用及服务的部署场景主要体现在集群化.微服务和容器化,这一切都建立在针对部署应用或者服务的健康检查上.ASP.NET提供的健康检查不仅可能确定目标应用或者服务的可用性,还具有健康报告发布功能. ...
- sshpiper 在 Kubernetes 上的应用
sshpiper 在 Kubernetes 上的应用 介绍 GitHub Repo 一个反向代理目标服务器的 proxy,客户端想请求某个 ssh 服务器,直接请求的是 sshpiper 服务,再经由 ...