第一章:C#如何拿到从http上返回JSON数据?

第二章:C#如何解析JSON数据?(反序列化对象)

第三章:C#如何生成JSON字符串?(序列化对象)

第四章:C#如何生成JSON字符串提交给接口(服务器)?

在实际开发中,我们经常会使用到API,所谓API一般就是一个地址,我们称之为接口。然后我们通过用C#对这地址发送请求,请求后,服务器就会给我们返回数据,一般是XML或者JSON,这里我们主要讲述的是JSON。

为了演示,我们这里准备了一个接口,这是一个查询物流的接口。(读者读到这篇文章的时候,接口可能有效,也可能失效,因为接口是网上找的,不是笔者自己写的,但是原理是一样的。)

接口:  http://www.kuaidi100.com/query?type=快递公司编码&postid=物流单号

(ps:快递公司编码:申通="shentong" EMS="ems" 顺丰="shunfeng" 圆通="yuantong" 中通="zhongtong" 韵达="yunda" 天天="tiantian" 汇通="huitongkuaidi" 全峰="quanfengkuaidi" 德邦="debangwuliu" 宅急送="zhaijisong")

一般我们拿到接口后,需要拼接成我们需要的地址。比如,我们现在需要查询顺丰物流的单的结果。那么,我们就需要拼接这个接口,拼接结果如下:

http://www.kuaidi100.com/query?type=shunfeng&postid=367847964498

我们拼接好后,可以直接在浏览器上访问这个地址,看看是不是可以正常访问。如果可以正常访问,说明我们这个接口没有问题。那么,我们现在先在浏览器访问一下。看到下面返回的结果就说明正确。

接下来就是大家最喜欢的写代码环节,为了方便演示,我们这里用winform程序。非常简单,我们新建一个窗体程序,点击后,弹出JSON数据即可。界面如下:

建好窗体,放一个按钮,然后我们来创建一个类HttpUitls。这个是这个文章中最重要的。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.IO;
  7.  
  8. namespace WindowsFormsApplication1
  9. {
  10. public class HttpUitls
  11. {
  12. public static string Get(string Url)
  13. {
  14. //System.GC.Collect();
  15. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  16. request.Proxy = null;
  17. request.KeepAlive = false;
  18. request.Method = "GET";
  19. request.ContentType = "application/json; charset=UTF-8";
  20. request.AutomaticDecompression = DecompressionMethods.GZip;
  21.  
  22. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  23. Stream myResponseStream = response.GetResponseStream();
  24. StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
  25. string retString = myStreamReader.ReadToEnd();
  26.  
  27. myStreamReader.Close();
  28. myResponseStream.Close();
  29.  
  30. if (response != null)
  31. {
  32. response.Close();
  33. }
  34. if (request != null)
  35. {
  36. request.Abort();
  37. }
  38.  
  39. return retString;
  40. }
  41.  
  42. public static string Post(string Url, string Data, string Referer)
  43. {
  44. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
  45. request.Method = "POST";
  46. request.Referer = Referer;
  47. byte[] bytes = Encoding.UTF8.GetBytes(Data);
  48. request.ContentType = "application/x-www-form-urlencoded";
  49. request.ContentLength = bytes.Length;
  50. Stream myResponseStream = request.GetRequestStream();
  51. myResponseStream.Write(bytes, , bytes.Length);
  52.  
  53. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  54. StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  55. string retString = myStreamReader.ReadToEnd();
  56.  
  57. myStreamReader.Close();
  58. myResponseStream.Close();
  59.  
  60. if (response != null)
  61. {
  62. response.Close();
  63. }
  64. if (request != null)
  65. {
  66. request.Abort();
  67. }
  68. return retString;
  69. }
  70.  
  71. }
  72. }

这个类有两个方法,一个是Get,一个是Post,本篇文章我们只需要用到Get就可以了。

然后是点击按钮的方法

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace WindowsFormsApplication1
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18.  
  19. private void button1_Click(object sender, EventArgs e)
  20. {
  21. //我们的接口
  22. string url = "http://www.kuaidi100.com/query?type=shunfeng&postid=367847964498";
  23.  
  24. //将接口传入,这个HttpUitls的类,有兴趣可以研究下,也可以直接用就可以,不用管如何实现。
  25. string getJson = HttpUitls.Get(url);
  26.  
  27. MessageBox.Show(getJson);
  28. }
  29. }
  30. }

然后是运行结果

到这一步说明我们已经成功拿到接口给我们返回的JSON数据了。那么我们会在下一篇文章中讲解如何使用这JSON数据,也就是解析JSON

C#如何拿到从http上返回JSON数据?的更多相关文章

  1. 从Http上返回Json数据

    我们现在先在浏览器访问一下,看到下面返回的结果: 接下来就是大家最喜欢的写代码环节,为了方便演示,我们这里用winform程序.非常简单,我们新建一个窗体程序,点击后,弹出JSON数据即可.界面如下: ...

  2. C#从http上拿返回JSON数据

    C#如何拿到从http上返回JSON数据? 第一章:C#如何拿到从http上返回JSON数据? 第二章:C#如何解析JSON数据?(反序列化对象) 第三章:C#如何生成JSON字符串?(序列化对象) ...

  3. SpringMVC——返回JSON数据&&文件上传下载

    --------------------------------------------返回JSON数据------------------------------------------------ ...

  4. 深入了解Struts2返回JSON数据的原理

    首先来看一下JSON官方对于"JSON"的解释: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析 ...

  5. spingmvc 返回json数据日期格式化方法

    第一种: json 用的是这个依赖 <!-- JSON lib 开发包 以及它的依赖包 --> <dependency> <groupId>com.fasterxm ...

  6. Spring MVC返回json数据给Android端

    原先做Android项目时,服务端接口一直是别人写的,自己拿来调用一下,但下个项目,接口也要自己搞定了,我想用Spring MVC框架来提供接口,这两天便抽空浅学了一下该框架以及该框架如何返回json ...

  7. idea+springmvc+spring+mybatis+maven整合返回json数据webapi

    首先看一张目录结构图: : 创建步骤: 1.创建maven  webapp工程, 创建完后的目录结构为: 2.添加项目依赖(添加jar包) 需要的jar包: spring-webmvc, spring ...

  8. springmvc04-文件上传-JSON数据

    文件上传部分: 1, 导入commons-fileupload-1.2.2.jar commons-io-2.4.jar 两个jar包. 2, 在主配置文件中,添加如下信息 <!-- 文件上传- ...

  9. Spring Boot 返回 JSON 数据,一分钟搞定!

    如何返回 JSON 数据? 在 Spring Boot 中返回 JSON 数据很简单,如下几步. 加入依赖 12345678910 <parent> <groupId>org. ...

随机推荐

  1. @RequestMapping

    可以设定访问的目录,与访问的方式 对象可以是类,也可以是方法 @RequestMapping(value = "/say",method = RequestMethod.GET) ...

  2. nova cell配置

    Configuration option = Default value Description [cells] call_timeout = 60 (IntOpt) Seconds to wait ...

  3. R语言入门基础

    教程:常用运算函数.对一般数据进行运算的常用函数: 1.round() #四舍五入 例:x <- c(3.1416, 15.377, 269.7) round(x, 0) #保留整数位 roun ...

  4. SQL Server中的执行引擎入门

      简介 当查询优化器(Query Optimizer)将T-SQL语句解析后并从执行计划中选择最低消耗的执行计划后,具体的执行就会交由执行引擎(Execution Engine)来进行执行.本文旨在 ...

  5. 5.3 Razor语法基础

    以往开发ASP.NET Web Form时,在ASPX页面上都会出现许多夹杂C#/VB.NET与HTML的情况,而先前使用<%...%>这种传统圆角括号的表示法会让HTML标签与ASP.N ...

  6. _Meta 部分用法

    model.UserInfo._meta.app_label #获取该类所在app的app名称 model.UserInfo._meta.model_name #获取该类对应表名(字符串类型) mod ...

  7. Smarty的模板中不允许PHP的代码?

    /****************************************************************************** * Smarty的模板中不允许PHP的代 ...

  8. mac下安装libpng环境

    用go写一个爬虫工具时需要使用一个go的库,而这个库有需要使用libpng库,不然编译就会提示说 png.h找不到等之类的信息,于是想到应该和windows一样需要安装gcc环境,然后让gcc里安装l ...

  9. 《Javascript高级程序设计》阅读记录(四):第五章 下

    这个系列,我会把阅读<Javascript高级程序设计>之后,感觉讲的比较深入,而且实际使用价值较大的内容记录下来,并且注释上我的一些想法.做这个一方面是提升了我的阅读效果以及方便我以后阅 ...

  10. LeetCode Student Attendance Record I

    原题链接在这里:https://leetcode.com/problems/student-attendance-record-i/description/ 题目: You are given a s ...