【转】C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析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", "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.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# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据的更多相关文章
- RestSharp发送请求得到Json数据
NUGET安装:RestSharp code: public string Post(string url, string content) { string contentType = " ...
- 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)
在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...
- autojs,autojs 发送http请求,autojs 解析json数据
如题,我这个就直接上代码吧 (function () { let request = http.request; // 覆盖http关键函数request,其他http返回最终会调用这个函数 http ...
- 异步POST请求解析JSON
异步POST请求解析JSON 一.创建URL NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/order ...
- iapp,iapp http请求,iapp解析json数据
iapp发送http请求,并解析json数据 //http操作 t() { s a = "http://wap.baidu.com/" //目标url hs(a, null, nu ...
- C#解析JSON数据
本篇文章主要介绍C#对Json数据的读取. 主要操作过程是: 发送Http请求获取Json数据 把获取的Json数据转换成C#中的类 下面我们以12306火车票余票的数据为例进行切入. 首先来看一下h ...
- C# 解析json数据出现---锘縖
解析json数据的时候出现 - 锘縖,不知道是不是乱码,反正我是不认识这俩字.后来发现是json的 '[' 字符转换的 网上搜了一下,说的是字符集不匹配,把字符集改为GB2312. 一.贴下处理jso ...
- IOS 解析Json数据(NSJSONSerialization)
● 什么是JSON ● JSON是一种轻量级的数据格式,一般用于数据交互 ● 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除 外) ● JSON的格式很像OC中的字典和数组 ...
- Qt QJson解析json数据
Qt QJson解析json数据 //加载根目录文件 void TeslaManageData::loadRootFolderFiles() { QNetworkAccessManager *mana ...
随机推荐
- C++primer学习笔记(二)——Chapter 4
4.1 Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则 ...
- 铭飞MCMS内容管理系统完整开源版J2EE代码
当前版本:4.6.0铭飞MS官网:http://ms.mingsoft.net官网同时提供一键运行版本下载,请步移官网....QQ交流群号1:221335098很多人说铭飞MCMS是大天朝国唯一完整开 ...
- Servlet应用的运行流程
其中,红色部分为我们开发人员要做的,其他部分是框架做的. 学习就要搞懂整个运行的流程!否则,不利于个人技术的积累!
- C# PropertyGrid控件应用心得
何处使用 PropertyGrid 控件 在应用程序中的很多地方,您都可以使用户与 PropertyGrid 进行交互,从而获得更丰富的编辑体验.例如,某个应用程序包含多个用户可以设置的“设置”或选项 ...
- 8.Smack类库
1.登陆IM Connection.DEBUG_ENABLED = true;//首先激活调试模式 1.1建立连接 首先,在启动DSM Message时,客户端通过XMPPConnection与服务器 ...
- Javac早期(编译期)
从Sun Javac的代码来看,编译过程大致可以分为3个过程: 解析与填充符号表过程. 插入式注解处理器的注解处理过程. 分析与字节码生成过程. Javac编译动作的入口是com.sun.tools. ...
- AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码
AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...
- 阿里云SDK手册之java SDK
进行阿里云sdk开发的前提是已经购买阿里云的相关服务才能调用阿里的相关接口进行开发.最近公司在做云管控的项目,于是进行下摘录总结. 一. 环境准备 阿里云针对不同的开发语言提供不同的sdk,由于项目用 ...
- 5分钟上手写ECharts的第一个图表
网址:http://echarts.baidu.com/doc/start.html 架构特性 http://echarts.baidu.com/doc/feature.html | 架构 提供商业产 ...
- POJ2778 DNA Sequence(AC自动机+矩阵快速幂)
题目给m个病毒串,问不包含病毒串的长度n的DNA片段有几个. 感觉这题好神,看了好久的题解. 所有病毒串构造一个AC自动机,这个AC自动机可以看作一张有向图,图上的每个顶点就是Trie树上的结点,每个 ...