欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#网络请求与JSON解析的示例代码

程序员文章站 2022-06-21 09:43:41
最新学校的海康摄像头集控平台(网页端)不能在win10里登录,我寻思着拿海康的c# demo直接改。 首先得解决权限问题,每个教师任教不同年级,只能看到自己所在年级的设备...

最新学校的海康摄像头集控平台(网页端)不能在win10里登录,我寻思着拿海康的c# demo直接改。

首先得解决权限问题,每个教师任教不同年级,只能看到自己所在年级的设备,涉及到登录,在此记录一下c#中网络请求和数据处理的一些内容。大致流程为:

  • 客户端发起登录请求;
  • 服务端验证账号密码
  • 返回json字符串,包含用户信息、平台配置等信息
  • 客户端解析并初始化

 一、发起get请求

  private string httpget(string api)
    {
      string serviceaddress = api;
      httpwebrequest request = (httpwebrequest)webrequest.create(serviceaddress);
      request.method = "get";
      request.contenttype = "text/html;charset=utf-8";
      httpwebresponse response = (httpwebresponse)request.getresponse();
      stream myresponsestream = response.getresponsestream();
      streamreader mystreamreader = new streamreader(myresponsestream, encoding.utf8);
      //返回json字符串
      return mystreamreader.readtoend();
    }

建议在子线程中调用,避免阻塞引起程序假死:

 task task1 = new task(() =>
    {
      string response = httpget("http://172.16.0.239:9002/lg.php?action=checknotice");
      this.invoke((methodinvoker)(() =>//子线程中操作ui
      {
        label1.text = response;//于程序界面显示
      }));
      console.writeline(response);//于控制台打印
    });
   task1.start();

效果如图:

C#网络请求与JSON解析的示例代码

二、json数据解析

在c#中,需要引入newtonsoft.json库,信息如下:

官网:

源码地址: https://github.com/jamesnk/newtonsoft.json

newtonsoft.json.dll下载: https://github.com/jamesnk/newtonsoft.json/releases

再将返回的response字符串进行如下处理:

jobject json = (jobject)jsonconvert.deserializeobject(response);
console.writeline(json);
console.writeline(json["code"]);
console.writeline(json["content"]);

即可以对象的形式访问:

C#网络请求与JSON解析的示例代码

还是准备去研究electron,winform的界面,真的是太丑了...

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。