一:C#從http上取JSON數(shù)據(jù)
向服務(wù)器請求數(shù)據(jù)后,一般時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屬性,取所需要的內(nèi)容,這里參數(shù)可以改為實體類,向方法傳參
//還額外有個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;
}
}
}
窗體中點(diǎn)擊發(fā)生事件:
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) + "¤cyCode=" + hbxz;
var result = PostHelper.Get(Url);
var rootobject= JsonConvert.DeserializeObject<Rootobject> (result);
///
//處理獲取到的信息源
///
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
二:公司中已經(jīng)封好的方法使用:
第一步:先添加引用;
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;
}
第三步:調(diào)用方法獲取數(shù)據(jù);
第四步:轉(zhuǎn)為獲取到的數(shù)據(jù)源實體類;
注:Rootobject是封好的實體類。
result是上述方法的返回字符串。
var rootobject= JsonConvert.DeserializeObject<Rootobject> (result);
三:http獲取網(wǎng)頁界面所顯示數(shù)據(jù)
第一步:封好的方法:
public static string HttpGet(string url)
{
//cookie是要在網(wǎng)頁F12看到的cookie “復(fù)制過來”
string cookiestr = "cookies";
//創(chuàng)建請求
HttpWebRequest httpWebRequest=(HttpWebRequest)WebRequest.Create(url);
//請求方式
httpWebRequest.Method = "GET";
//設(shè)置請求超時時間
httpWebRequest.Timeout = 10000;
//設(shè)置cookie
httpWebRequest.Headers.Add("Cookie", cookiestr);
//發(fā)送請求
HttpWebResponse httpWebResponse=(HttpWebResponse)httpWebRequest.GetResponse();
//利用Stream流讀取返回數(shù)據(jù)
StreamReader streamReader=new StreamReader(httpWebResponse.GetResponseStream());
//獲得最終數(shù)據(jù),一般是JSON
string responseContent=streamReader.ReadToEnd();
streamReader.Close();
httpWebResponse.Close();
//返回到的一般是JSON格式的字符串
return responseContent;
}
第二步:調(diào)用方法文章來源:http://www.zghlxwxcb.cn/news/detail-770636.html
string txt = HttpGet(@"url");
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(txt);
var div = doc.DocumentNode.SelectNodes("http://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();
關(guān)于網(wǎng)頁信息內(nèi)容學(xué)習(xí)總結(jié)和心得…文章來源地址http://www.zghlxwxcb.cn/news/detail-770636.html
到了這里,關(guān)于C#從http上返回JSON數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!