刚学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#] 第二习题 : 快递跟踪信息查询的更多相关文章

  1. php快递单号查询源码

    贴下记录下php查询快递单号的源码,能查询各种快递的快递单号记录,中通.圆通快递.顺丰快递等都不是问题.只需要在 爱快递(www.aikuaidi.cn)上面申请一个快递key即可,下面把源码分享下, ...

  2. 快递单号查询免费api接口(PHP示例)

    快递单号查询API,可以对接顺丰快递查询,邮政快递查询,中通快递查询等.这些快递物流企业,提供了快递单号自动识别接口,快递单号查询接口等快递物流服务.对于电商企业,ERP服务企业,集成此接口到自己的软 ...

  3. java抓取快递100信息接口

    package zeze; import java.io.IOException; import org.json.JSONArray; import org.json.JSONException; ...

  4. C#快递跟踪(基于快递100深度定制)

    本文主要介绍快递跟踪的相关信息.如根据快递单号预测所属快递公司,判断快递是否已被签收,以及改良官方model后可在不用申请授权的情况下实现json,html,xml及text等多种格式以及单行多行,降 ...

  5. C语言身份证信息查询系统(修改版)

    很久以前写了一个<C语言身份证信息查询系统>,如果你点击链接进去看了. 估计也会被我那磅礴大气的代码震惊到的,最近复习/学习文件操作,把代码改了改,算是对以前还不会文件操作的时候的愿望,哈 ...

  6. ajax实现快递单号查询

    效果:(代码写的有点乱,自行修改就可以了) 源码: index.php <!DOCTYPE html> <html lang="en"> <head& ...

  7. 中通快递单api查询

    request POST https://hdgateway.zto.com/WayBill_GetDetail HTTP/1.1Host: hdgateway.zto.comConnection: ...

  8. ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...

  9. ECSHOP和SHOPEX快递单号查询顺丰插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...

  10. ECSHOP和SHOPEX快递单号查询申通插件V8.6专版

    发布ECSHOP说明: ECSHOP快递物流单号查询插件特色 本ECSHOP快递物流单号跟踪插件提供国内外近2000家快递物流订单单号查询服务例如申通快递.顺丰快递.圆通快递.EMS快递.汇通快递.宅 ...

随机推荐

  1. SpringCloud+Eureka初识+Ribbon+Feign+Hystrix(服务熔断,服务降级)+hashbroad

    ​Eureka注册中心 1.导包 <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework ...

  2. Java的标识符、关键字、 常量、变量、数据类型、 数据类型转换、字符ASCII码表(基础语法的学习)

    一.Java的关键字和标识符 关键字 1.定义: 在Java程序中,已经定义好的被预先使用的一些特殊的单词称为关键字,一共有50个关键字(48+2个保留字),关键字都是小写的英文单词 2.关键字的分类 ...

  3. WPF 入门笔记 - 03 - 样式基础

    程序的本质 - 数据结构 + 算法 本篇为学习李应保老师所著的<WPF专业编程指南>并搭配WPF开发圣经<WPF编程宝典第4版>以及痕迹大佬<WPF入门基础教程系列> ...

  4. 使用hashicorp Raft开发分布式服务

    使用hashicorp Raft开发高可用服务 开发raft时用到的比较主流的两个库是Etcd Raft 和hashicorp Raft,网上也有一些关于这两个库的讨论.之前分析过etcd Raft, ...

  5. 3. AOP

    1. 代理模式 1.1 概念 ① 介绍 二十三种设计模式中的一种,属于结构型模式.它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类间接调用.让不 ...

  6. Blazor前后端框架Known-V1.2.2

    V1.2.2 Known是基于C#和Blazor开发的前后端分离快速开发框架,开箱即用,跨平台,一处代码,多处运行. 概述 基于C#和Blazor实现的快速开发框架,前后端分离,开箱即用. 跨平台,单 ...

  7. 使用Python接口自动化测试post请求和get请求,获取请求返回值

    引言我们在做python接口自动化测试时,接口的请求方法有get,post等:get和post请求传参,和获取接口响应数据的方法: 请求接口为Post时,传参方法我们在使用python中request ...

  8. JMeter脚本报错:Cannot find engine named: 'javascript'的解决方法

    本文将介绍如何解决在JMeter版本5.4.1下执行脚本时出现的错误信息"javax.script.ScriptException: Cannot find engine named: 'j ...

  9. TCP 初识(一)

    什么是TCP? TCP是面向连接的,可靠的,基于字节流的传输层通信协议. 面向连接:一定是一对一才能连接,不能像UDP协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的. 可靠的:无论网 ...

  10. Blazor 跨平台的、共享一套UI的天气预报 Demo

    1. 前言 很久之前就读过 dotnet9 大佬的一篇文章,MAUI与Blazor共享一套UI,媲美Flutter,实现Windows.macOS.Android.iOS.Web通用UI,没读过的可以 ...