C# HttpWebRequestHttpWebResponseWebClient发送请求解析json数据
Posted mimime
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# HttpWebRequestHttpWebResponseWebClient发送请求解析json数据相关的知识,希望对你有一定的参考价值。
http://blog.csdn.net/kingcruel/article/details/44036871
版权声明:本文为博主原创文章,未经博主允许不得转载。
- ======================================================================================================================================
- /// <summary>
- /// 日期:2016-2-4
- /// 备注:bug已修改,可以使用
- /// </summary>
- public static void Method1()
- {
- try
- {
- string domain = "http://192.168.1.6:8098/";
- string url = domain + "/Signin/LoginApi";
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "POST";
- request.ContentType = "application/x-www-form-urlencoded";
- request.ReadWriteTimeout = 30 * 1000;
- ///添加参数
- Dictionary<String, String> dicList = new Dictionary<String, String>();
- dicList.Add("UserName", "[email protected]");
- dicList.Add("Password", "000000");
- String postStr = buildQueryStr(dicList);
- byte[] data = Encoding.UTF8.GetBytes(postStr);
- request.ContentLength = data.Length;
- Stream myRequestStream = request.GetRequestStream();
- myRequestStream.Write(data, 0, data.Length);
- myRequestStream.Close();
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
- var retString = myStreamReader.ReadToEnd();
- myStreamReader.Close();
- }
- catch (Exception ex)
- {
- log.Info("Entered ItemHierarchyController - Initialize");
- log.Error(ex.Message);
- }
- }
- ======================================================================================================================================
升级版本,提取到帮助类,封装对象
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.IO;
- using System.Net;
- using System.Text;
- using System.Web;
- namespace CMS.Common
- {
- public class MyHttpClient
- {
- public string methodUrl = string.Empty;
- public string postStr = null;
- public MyHttpClient(String methodUrl)
- {
- this.methodUrl = methodUrl;
- }
- public MyHttpClient(String methodUrl, String postStr)
- {
- ///this.methodUrl = ConfigurationManager.AppSettings["ApiFrontEnd"];///http://192.168.1.6:8098/Signin/LoginApi
- ///this.postStr = postStr;
- this.methodUrl = methodUrl;
- this.postStr = postStr;
- }
- /// <summary>
- /// GET Method
- /// </summary>
- /// <returns></returns>
- public String ExecuteGet()
- {
- HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(this.methodUrl);
- myRequest.Method = "GET";
- HttpWebResponse myResponse = null;
- try
- {
- myResponse = (HttpWebResponse)myRequest.GetResponse();
- StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
- string content = reader.ReadToEnd();
- return content;
- }
- //异常请求
- catch (WebException e)
- {
- myResponse = (HttpWebResponse)e.Response;
- using (Stream errData = myResponse.GetResponseStream())
- {
- using (StreamReader reader = new StreamReader(errData))
- {
- string text = reader.ReadToEnd();
- return text;
- }
- }
- }
- }
- /// <summary>
- /// POST Method
- /// </summary>
- /// <returns></returns>
- public string ExecutePost()
- {
- string content = string.Empty;
- Random rd = new Random();
- int rd_i = rd.Next();
- String nonce = Convert.ToString(rd_i);
- String timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));
- String signature = GetHash(this.appSecret + nonce + timestamp);
- try
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.methodUrl);
- request.Method = "POST";
- request.ContentType = "application/x-www-form-urlencoded";
- request.Headers.Add("Nonce", nonce);
- request.Headers.Add("Timestamp", Convert.ToString(StringProc.ConvertDateTimeInt(DateTime.Now)));
- request.Headers.Add("Signature", signature);
- request.ReadWriteTimeout = 30 * 1000;
- byte[] data = Encoding.UTF8.GetBytes(postStr);
- request.ContentLength = data.Length;
- Stream myRequestStream = request.GetRequestStream();
- myRequestStream.Write(data, 0, data.Length);
- myRequestStream.Close();
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
- content = myStreamReader.ReadToEnd();
- myStreamReader.Close();
- }
- catch (Exception ex)
- {
- }
- return content;
- }
- }
- public class StringProc
- {
- public static String buildQueryStr(Dictionary<String, String> dicList)
- {
- String postStr = "";
- foreach (var item in dicList)
- {
- postStr += item.Key + "=" + HttpUtility.UrlEncode(item.Value, Encoding.UTF8) + "&";
- }
- postStr = postStr.Substring(0, postStr.LastIndexOf(‘&‘));
- return postStr;
- }
- public static int ConvertDateTimeInt(System.DateTime time)
- {
- System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
- return (int)(time - startTime).TotalSeconds;
- }
- }
- }
前端调用
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using CMS.Common;
- using Newtonsoft.Json;
- namespace Medicine.Web.Controllers
- {
- public class DefaultController : Controller
- {
- public ActionResult Index()
- {
- #region DoGet
- string getResultJson = this.DoGet(url);
- HttpClientResult customerResult = (HttpClientResult)JsonConvert.DeserializeObject(getResultJson, typeof(HttpClientResult));
- #endregion
- #region DoPost
- string name = Request.Form["UserName"];
- string password = Request.Form["Password"];
- Dictionary<String, String> dicList = new Dictionary<String, String>();
- dicList.Add("UserName", name);
- dicList.Add("Password", password);
- string postStr = StringProc.buildQueryStr(dicList);
- string postResultJson = this.DoPost(url, postStr);
- HttpClientResult userResult = (HttpClientResult)JsonConvert.DeserializeObject(postResultJson, typeof(HttpClientResult));
- #endregion
- return View();
- }
- /// <summary>
- /// GET Method
- /// </summary>
- /// <param name="portraitUri">url地址</param>
- /// <returns></returns>
- private String DoGet(string portraitUri)
- {
- MyHttpClient client = new MyHttpClient(portraitUri);
- return client.ExecuteGet();
- }
- /// <summary>
- /// POST Method
- /// </summary>
- /// <param name="portraitUri">url地址</param>
- /// <param name="postStr">请求参数</param>
- /// <returns></returns>
- private String DoPost(string portraitUri, string postStr)
- {
- MyHttpClient client = new MyHttpClient(portraitUri, postStr);
- return client.ExecutePost();
- }
- public class HttpClientResult
- {
- public string UserName { get; set; }
- public bool Success { get; set; }
- }
- }
- }
以上是关于C# HttpWebRequestHttpWebResponseWebClient发送请求解析json数据的主要内容,如果未能解决你的问题,请参考以下文章