C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据
来源:互联网 发布:手机mac地址怎么查看 编辑:程序博客网 时间:2024/05/17 03:23
======================================================================================================================================/// <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.ContentType = "application/json"; request.ReadWriteTimeout = 30 * 1000; ///添加参数 Dictionary<String, String> dicList = new Dictionary<String, String>(); dicList.Add("UserName", "test@qq.com"); 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.ContentType = "application/json"; 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; } } }}
3 0
- C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据
- C#中用HttpWebRequest/HttpWebResponse来发送/接收数据
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- 【转载】C#网页采集数据的几种方式(WebClient、WebBrowser和HttpWebRequest/HttpWebResponse)
- C# Http请求(WebClient,HttpWebRequest)
- C# Get请求数据 WebClient和HttpWebRequest获取HTML代码
- c# HttpWebRequest与HttpWebResponse
- c# HttpWebRequest与HttpWebResponse
- c# HttpWebRequest与HttpWebResponse
- c# HttpWebRequest与HttpWebResponse请求网页和返回网页教程
- 用httpwebrequest/httpwebresponse向服务器POST发送及接收数据
- 用httpwebrequest/httpwebresponse向服务器POST发送及接收数据
- c# HttpWebRequest与HttpWebResponse 绝技
- c# HttpWebRequest与HttpWebResponse 绝技
- c# HttpWebRequest与HttpWebResponse 绝技
- c# HttpWebRequest与HttpWebResponse 绝技
- c# HttpWebRequest与HttpWebResponse 绝技
- 转载:十张图解释机器学习的基本概念
- 创建GitHub技术博客全攻略
- jQuery点击空白处关闭弹出窗口
- 【DAO】数据库三范式说明
- android 颜色搭配表
- C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据
- This version of the rendering library is more recent than your version of ADT plug-in. Please update
- Codeforces Round #295 (Div. 1)
- AED/AEC
- PAT.Advanced.P1043
- 1031. Hello World for U
- Hibernate实体类或属性名与数据库关键字冲突的解决办法
- 增强现实1
- 使用 C++11 编写 Linux 多线程程序