C#从http上返回JSON数据

这篇具有很好参考价值的文章主要介绍了C#从http上返回JSON数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:C#从http上取JSON数据
向服务器请求数据后,一般时XML或JSON:(以JSON为例)
在C#中WinForm为例操作:
Util工具类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;

namespace WindowsUtil
{
    public class HttpUitls
    {
         public static string GetHtml(string Url)
        {
        	//可以看看request属性,取所需要的内容,这里参数可以改为实体类,向方法传参
        	//还额外有个cookie字段很重要!!!
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);//请求地址
            request.Method = "GET";//请求方法
            request.AllowAutoRedirect = true;//重定向
            request.Proxy = null;//代理信息
            request.KeepAlive = false;
            request.ContentType = "application/json; charset=UTF-8";
            request.AutomaticDecompression = DecompressionMethods.GZip;

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }
            return retString;
        }

        public static string Post(string Url, string Data, string Referer)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Method = "POST";
            request.Referer = Referer;
            byte[] bytes = Encoding.UTF8.GetBytes(Data);
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = bytes.Length;
            Stream myResponseStream = request.GetRequestStream();
            myResponseStream.Write(bytes, 0, bytes.Length);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string retString = myStreamReader.ReadToEnd();

            myStreamReader.Close();
            myResponseStream.Close();

            if (response != null)
            {
                response.Close();
            }
            if (request != null)
            {
                request.Abort();
            }
            return retString;
        }  
    }
}

窗体中点击发生事件:

private string searchUrl = $"http://www.chinamoney.com.cn/ags/ms/cm-u-bk-fx/RefRateHis?lang=cn&";

private void Btnsearch_Click(object sender, EventArgs e)
{
	try
	{
		DateTime dateTime = Convert.ToDateTime(this.Datepick.Month);
		string hbxz = "ALL";
		if (!string.IsNullOrEmpty(this.Ddlhbxz.SelectedValue))
		{
		    hbxz = this.Ddlhbxz.SelectedValue;
		}
		string Url = searchUrl + "startDateTool=" + DateHelper.GetCurMonthFirstDay(dateTime) + "&" + "endDateTool=" + DateHelper.GetCurMonthLastDay(dateTime) + "&currencyCode=" + hbxz;
		var result = PostHelper.Get(Url);
		var rootobject= JsonConvert.DeserializeObject<Rootobject> (result);
		///
		//处理获取到的信息源
		///
	}
    catch(Exception ex)
    {
        MessageBox.Show(ex.Message);
    }   
}              

二:公司中已经封好的方法使用:
第一步:先添加引用;
Universal.Kits
第二步:书写方法;

private string get(string url)
{
    var result = new HttpHelper().GetHtml(new HttpItem
    {
        URL = url,//请求地址
        Method="get",//方法
        Allowautoredirect=true//重定向
    }) ;
    if (result.StatusCode == System.Net.HttpStatusCode.OK)
    {
        return result.Html;
    }
    return null;       
}

第三步:调用方法获取数据;
第四步:转为获取到的数据源实体类;
注:Rootobject是封好的实体类。
result是上述方法的返回字符串。

var rootobject= JsonConvert.DeserializeObject<Rootobject> (result);

三:http获取网页界面所显示数据
第一步:封好的方法:

public static string HttpGet(string url)
{
    //cookie是要在网页F12看到的cookie “复制过来”
    string cookiestr = "cookies";
    //创建请求
    HttpWebRequest httpWebRequest=(HttpWebRequest)WebRequest.Create(url);
    //请求方式
    httpWebRequest.Method = "GET";
    //设置请求超时时间
    httpWebRequest.Timeout = 10000;
    //设置cookie
    httpWebRequest.Headers.Add("Cookie", cookiestr);
    //发送请求
    HttpWebResponse httpWebResponse=(HttpWebResponse)httpWebRequest.GetResponse();
    //利用Stream流读取返回数据
    StreamReader streamReader=new StreamReader(httpWebResponse.GetResponseStream());
    //获得最终数据,一般是JSON
    string responseContent=streamReader.ReadToEnd();
    streamReader.Close();
    httpWebResponse.Close();

    //返回到的一般是JSON格式的字符串
    return responseContent;
}

第二步:调用方法

 string txt = HttpGet(@"url");
 HtmlDocument doc = new HtmlDocument();
 doc.LoadHtml(txt);
 var div = doc.DocumentNode.SelectNodes("//div[@id='all-list']//ul//li//a[@class='title']");//div的ID class找到具体位置
 foreach (HtmlNode node in div)
 {
     string href = node.GetAttributeValue("href", "");
     Console.WriteLine(string.Format("{0}-----------{1}",
     node.InnerText,
     node.GetAttributeValue("href", "")+"\r\n"));
 }
 Console.ReadKey();

关于网页信息内容学习总结和心得…文章来源地址https://www.toymoban.com/news/detail-770636.html

到了这里,关于C#从http上返回JSON数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C#从网址上读取json数据

    需求:从客户给的网址中读取json格式的数据。 找了好多资料,都不太好使,看到了一篇很有帮助的文章。以下大部分内容和这篇找到的文章近似。太不容易了,同时也感谢这篇文章的作者心所欲。 https://www.cnblogs.com/zoujinhua/p/10330066.html 下面总结一下。 在实际开发中,我们经

    2024年01月25日
    浏览(28)
  • 【Unity】C# 创建/读取/解析JSON数据

    判断是否存在JSON数据文件没有则创建并保存

    2024年02月16日
    浏览(57)
  • c#处理3种json数据的实例介绍

    这篇文章主要介绍了c#处理包含数组、对象的复杂json数据的方法,,需要的朋友可以参考下 网络中数据传输经常是xml或者json,现在做的一个项目之前调其他系统接口都是返回的xml格式,刚刚遇到一个返回json格式数据的接口,通过例子由易到难总结一下处理过程,希望能帮到和

    2024年02月14日
    浏览(25)
  • Qt 使用HTTP请求网络API并接收返回的JSON格式的数据

    引入网络模块: mainwindow.h: mainwindow.cpp:

    2024年02月13日
    浏览(37)
  • 【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)

    JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式存储和表示数据,简洁和清晰的层次结构使JSON成为理想的数据交换语言,易于读者阅读和编写,同时也易于机器解析和生成,并有效的提高网络传输效率 生成JSON数据实例代码如下 下面的代码将JSON中数据

    2024年02月11日
    浏览(45)
  • c# Json转C#实体

    1.Web Api获取 Json数据: 2.将Json转C#实体类网址:JSON转C#实体类-BeJSON.com 转换后的实体类: 代码实现:引用库文件:using Newtonsoft.Json; Json转换实体的代码:  Newtonsoft.Json.Linq.JObject resInfo = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(retString)!; this.barcodeInfo = JsonConve

    2024年02月07日
    浏览(28)
  • c#示例-json序列化和json树

    由于指针和引用类型的存在,在运行中的程序中,数据不一定是整块的。 可能东一块西一块散落在内存的各个地方。 序列,是指连续且有序的一个整体。序列化就是把数据变为连续有序整体的过程。 经过这样处理后的数据就可以方便的进行传输和储存了。 json是一种文本数

    2024年02月16日
    浏览(66)
  • C#读取json文件

    C# 读取 JSON 文件并读取某一个的值可以使用 Newtonsoft.Json 库。假设我们的 JSON 文件如下所示: 要读取其中的某一个的值,首先需要定义一个对应的实体类来存储 JSON 数据。例如,可以定义以下类: 然后,可以使用以下代码读取 JSON 文件,并将其反序列化为 Pers

    2024年02月13日
    浏览(27)
  • C# json生成类

      在C#中使用Newtonsoft.Json解析JSON,首先需要安装Newtonsoft.Json NuGet包。可以通过以下步骤进行安装:   (1) 打开Visual Studio项目。   (2) 在“解决方案资源管理器”中,右键单击项目,然后选择“管理NuGet程序包”。在NuGet包管理器中,搜索“Newtonsoft.Json”。找到Newtonsoft.J

    2024年02月08日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包