http://blog.csdn.net/kingcruel/article/details/44036871

版权声明:本文为博主原创文章,未经博主允许不得转载。

  1. ======================================================================================================================================
  2. /// <summary>
  3. /// 日期:2016-2-4
  4. /// 备注:bug已修改,可以使用
  5. /// </summary>
  6. public static void Method1()
  7. {
  8. try
  9. {
  10. string domain = "http://192.168.1.6:8098/";
  11. string url = domain + "/Signin/LoginApi";
  12. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  13. request.Method = "POST";
  14. request.ContentType = "application/x-www-form-urlencoded";
  15. request.ReadWriteTimeout = 30 * 1000;
  16. ///添加参数
  17. Dictionary<String, String> dicList = new Dictionary<String, String>();
  18. dicList.Add("UserName", "test@qq.com");
  19. dicList.Add("Password", "000000");
  20. String postStr = buildQueryStr(dicList);
  21. byte[] data = Encoding.UTF8.GetBytes(postStr);
  22. request.ContentLength = data.Length;
  23. Stream myRequestStream = request.GetRequestStream();
  24. myRequestStream.Write(data, 0, data.Length);
  25. myRequestStream.Close();
  26. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  27. StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  28. var retString = myStreamReader.ReadToEnd();
  29. myStreamReader.Close();
  30. }
  31. catch (Exception ex)
  32. {
  33. log.Info("Entered ItemHierarchyController - Initialize");
  34. log.Error(ex.Message);
  35. }
  36. }
  37. ======================================================================================================================================

升级版本,提取到帮助类,封装对象

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.IO;
  5. using System.Net;
  6. using System.Text;
  7. using System.Web;
  8. namespace CMS.Common
  9. {
  10. public class MyHttpClient
  11. {
  12. public string methodUrl = string.Empty;
  13. public string postStr = null;
  14. public MyHttpClient(String methodUrl)
  15. {
  16. this.methodUrl = methodUrl;
  17. }
  18. public MyHttpClient(String methodUrl, String postStr)
  19. {
  20. ///this.methodUrl = ConfigurationManager.AppSettings["ApiFrontEnd"];///http://192.168.1.6:8098/Signin/LoginApi
  21. ///this.postStr = postStr;
  22. this.methodUrl = methodUrl;
  23. this.postStr = postStr;
  24. }
  25. /// <summary>
  26. /// GET Method
  27. /// </summary>
  28. /// <returns></returns>
  29. public String ExecuteGet()
  30. {
  31. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(this.methodUrl);
  32. myRequest.Method = "GET";
  33. HttpWebResponse myResponse = null;
  34. try
  35. {
  36. myResponse = (HttpWebResponse)myRequest.GetResponse();
  37. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  38. string content = reader.ReadToEnd();
  39. return content;
  40. }
  41. //异常请求
  42. catch (WebException e)
  43. {
  44. myResponse = (HttpWebResponse)e.Response;
  45. using (Stream errData = myResponse.GetResponseStream())
  46. {
  47. using (StreamReader reader = new StreamReader(errData))
  48. {
  49. string text = reader.ReadToEnd();
  50. return text;
  51. }
  52. }
  53. }
  54. }
  55. /// <summary>
  56. /// POST Method
  57. /// </summary>
  58. /// <returns></returns>
  59. public string ExecutePost()
  60. {
  61. string content = string.Empty;
  62. Random rd = new Random();
  63. int rd_i = rd.Next();
  64. String nonce = Convert.ToString(rd_i);
  65. String timestamp = Convert.ToString(ConvertDateTimeInt(DateTime.Now));
  66. String signature = GetHash(this.appSecret + nonce + timestamp);
  67. try
  68. {
  69. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.methodUrl);
  70. request.Method = "POST";
  71. request.ContentType = "application/x-www-form-urlencoded";
  72. request.Headers.Add("Nonce", nonce);
  73. request.Headers.Add("Timestamp", Convert.ToString(StringProc.ConvertDateTimeInt(DateTime.Now)));
  74. request.Headers.Add("Signature", signature);
  75. request.ReadWriteTimeout = 30 * 1000;
  76. byte[] data = Encoding.UTF8.GetBytes(postStr);
  77. request.ContentLength = data.Length;
  78. Stream myRequestStream = request.GetRequestStream();
  79. myRequestStream.Write(data, 0, data.Length);
  80. myRequestStream.Close();
  81. HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  82. StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
  83. content = myStreamReader.ReadToEnd();
  84. myStreamReader.Close();
  85. }
  86. catch (Exception ex)
  87. {
  88. }
  89. return content;
  90. }
  91. }
  92. public class StringProc
  93. {
  94. public static String buildQueryStr(Dictionary<String, String> dicList)
  95. {
  96. String postStr = "";
  97. foreach (var item in dicList)
  98. {
  99. postStr += item.Key + "=" + HttpUtility.UrlEncode(item.Value, Encoding.UTF8) + "&";
  100. }
  101. postStr = postStr.Substring(0, postStr.LastIndexOf('&'));
  102. return postStr;
  103. }
  104. public static int ConvertDateTimeInt(System.DateTime time)
  105. {
  106. System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
  107. return (int)(time - startTime).TotalSeconds;
  108. }
  109. }
  110. }

前端调用

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Mvc;
  6. using CMS.Common;
  7. using Newtonsoft.Json;
  8. namespace Medicine.Web.Controllers
  9. {
  10. public class DefaultController : Controller
  11. {
  12. public ActionResult Index()
  13. {
  14. #region DoGet
  15. string getResultJson = this.DoGet(url);
  16. HttpClientResult customerResult = (HttpClientResult)JsonConvert.DeserializeObject(getResultJson, typeof(HttpClientResult));
  17. #endregion
  18. #region DoPost
  19. string name = Request.Form["UserName"];
  20. string password = Request.Form["Password"];
  21. Dictionary<String, String> dicList = new Dictionary<String, String>();
  22. dicList.Add("UserName", name);
  23. dicList.Add("Password", password);
  24. string postStr = StringProc.buildQueryStr(dicList);
  25. string postResultJson = this.DoPost(url, postStr);
  26. HttpClientResult userResult = (HttpClientResult)JsonConvert.DeserializeObject(postResultJson, typeof(HttpClientResult));
  27. #endregion
  28. return View();
  29. }
  30. /// <summary>
  31. /// GET Method
  32. /// </summary>
  33. /// <param name="portraitUri">url地址</param>
  34. /// <returns></returns>
  35. private String DoGet(string portraitUri)
  36. {
  37. MyHttpClient client = new MyHttpClient(portraitUri);
  38. return client.ExecuteGet();
  39. }
  40. /// <summary>
  41. /// POST Method
  42. /// </summary>
  43. /// <param name="portraitUri">url地址</param>
  44. /// <param name="postStr">请求参数</param>
  45. /// <returns></returns>
  46. private String DoPost(string portraitUri, string postStr)
  47. {
  48. MyHttpClient client = new MyHttpClient(portraitUri, postStr);
  49. return client.ExecutePost();
  50. }
  51. public class HttpClientResult
  52. {
  53. public string UserName { get; set; }
  54. public bool Success { get; set; }
  55. }
  56. }
  57. }
 
 

【转】C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据的更多相关文章

  1. RestSharp发送请求得到Json数据

    NUGET安装:RestSharp code: public string Post(string url, string content) { string contentType = " ...

  2. 使用jQuery解析JSON数据(由ajax发送请求到php文件处理数据返回json数据,然后解析json写入html中呈现)

    在上一篇的Struts2之ajax初析中,我们得到了comments对象的JSON数据,在本篇中,我们将使用jQuery进行数据解析. 我们先以解析上例中的comments对象的JSON数据为例,然后 ...

  3. autojs,autojs 发送http请求,autojs 解析json数据

    如题,我这个就直接上代码吧 (function () { let request = http.request; // 覆盖http关键函数request,其他http返回最终会调用这个函数 http ...

  4. 异步POST请求解析JSON

    异步POST请求解析JSON 一.创建URL NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/order ...

  5. iapp,iapp http请求,iapp解析json数据

    iapp发送http请求,并解析json数据 //http操作 t() { s a = "http://wap.baidu.com/" //目标url hs(a, null, nu ...

  6. C#解析JSON数据

    本篇文章主要介绍C#对Json数据的读取. 主要操作过程是: 发送Http请求获取Json数据 把获取的Json数据转换成C#中的类 下面我们以12306火车票余票的数据为例进行切入. 首先来看一下h ...

  7. C# 解析json数据出现---锘縖

    解析json数据的时候出现 - 锘縖,不知道是不是乱码,反正我是不认识这俩字.后来发现是json的 '[' 字符转换的 网上搜了一下,说的是字符集不匹配,把字符集改为GB2312. 一.贴下处理jso ...

  8. IOS 解析Json数据(NSJSONSerialization)

    ● 什么是JSON ● JSON是一种轻量级的数据格式,一般用于数据交互 ● 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除 外) ● JSON的格式很像OC中的字典和数组 ...

  9. Qt QJson解析json数据

    Qt QJson解析json数据 //加载根目录文件 void TeslaManageData::loadRootFolderFiles() { QNetworkAccessManager *mana ...

随机推荐

  1. hdu 4640(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最 ...

  2. Web开发中运行环境的配置:(Tomcat7.0.59)和开发环境的配置

    第一部分:运行环境的配置 1.下载压缩包,解压即可 2.配置系统变量JAVA_HOME为jdk的安装路径 3.如有需要修改端口号,比如8080已被占用的时候,可以将其改为9080等 apache-to ...

  3. 不能继承OrmLiteBaseActivity时,这样获取getHelper

    private DatabaseHelper databaseHelper = null; public DatabaseHelper getHelper() { if (databaseHelper ...

  4. 直接操作游戏对象C#游戏开发

    直接操作游戏对象C#游戏开发 2.2.3  直接操作游戏对象 在Inspector视图里通过设置属性而改变游戏场景中游戏对象的状态,太过抽象,毕竟数字并不够直观.其实,改变游戏对象的状态,完全有最最直 ...

  5. css 样式 图片平铺整个界面

    比如一个容器(body,div,span)中设定一个背景.这个背景的长宽值在css2.1之前是不能被修改的. 所以实际的结果是只能重复显示,所以出现了repeat,repeat-x,repeat-y, ...

  6. 计算几何 HDOJ 4720 Naive and Silly Muggles

    题目传送门 /* 题意:给三个点求它们的外接圆,判断一个点是否在园内 计算几何:我用重心当圆心竟然AC了,数据真水:) 正解以后补充,http://www.cnblogs.com/kuangbin/a ...

  7. bzoj1030 [JSOI2007]文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2654  Solved: 1100[Submit][Stat ...

  8. 博客搬到blog.csgrandeur.com

    博客已搬到blog.csgrandeur.com. cnblogs停止更新. wordpress太臃肿,难刷. hexo对windows似乎不太友好,迁移的时候建了十几层文件夹,导致目录过深无法移动无 ...

  9. Codeforces Round #203 (Div. 2) A.TL

    #include <iostream> #include <algorithm> using namespace std; int main(){ int n,m; cin & ...

  10. 【wikioi】1913 数字梯形问题(费用流)

    http://wikioi.com/problem/1913/ 如果本题没有询问2和3,那么本题和蚯蚓那题一模一样.http://www.cnblogs.com/iwtwiioi/p/3935039. ...