1. using System.Data;
  2. using System.Net;
  3. using System.IO;
  4. using System.Net.Http;
  5. using System.Web;
  6. using System.Collections.Specialized;
  7. using System.Web.Script.Serialization;
  8. using System.Collections;
  9. public string ToPackageJson(DataTable dt) //封装Json
  10. {
  11. Dictionary<string, string> dic1 = new Dictionary<string, string>();
  12. foreach (DataRow dr in dt.Rows)
  13. {
  14. foreach (DataColumn dc in dt.Columns)
  15. {
  16. dic1.Add(dc.ColumnName, dr[dc.ColumnName].ToString());
  17. }
  18. }
  19. Dictionary<string, object> dic2 = new Dictionary<string, object>();
  20. dic2.Add(dt.TableName, dic1);
  21. JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  22. javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
  23. return javaScriptSerializer.Serialize(dic2); //返回一个json字符串  {"dt.TableName":{"列名1":"列值1","列名2":"列值2","列名n":"列值n"}}
  24. }
  25. public string ToPost(string postURL,string NTLM_UserName,string NTML_PassWord,DataTable dtToPost)
  26.   {
  27.     //封装Json
  28.  string strJson = ToPackageJson(dtToPost);
  29. //通过NTLM验证
  30.     //1、创建空白的网站证书缓存
  31. System.Net.CredentialCache MyCredentialCache = new System.Net.CredentialCache();
  32.     //指定以b2c用户通过NTLM身份验证
  33. MyCredentialCache.Add(new System.Uri(postURL), "NTLM", new System.Net.NetworkCredential(NTLM_UserName, NTML_PassWord));
  34. HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(postURL);
  35. httpWebRequest.Credentials = MyCredentialCache;
  36. httpWebRequest.Method = "POST";
  37. httpWebRequest.ContentType = "application/json;charset=UTF-8";
  38. //httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, authStr); //auth权限验证   
  39. //将Json字符串转化为字节
  40. byte[] postDataByte = Encoding.UTF8.GetBytes(strJson);
  41. httpWebRequest.ContentLength = postDataByte.Length;
  42. httpWebRequest.AllowAutoRedirect = false;
  43. httpWebRequest.KeepAlive = true;
  44. httpWebRequest.ContentLength = postDataByte.Length;
  45. //获取用于写入请求数据的Stream对象
  46. Stream writer = httpWebRequest.GetRequestStream();
  47. //将请求参数写入流
  48. writer.Write(postDataByte, 0, postDataByte.Length);
  49. //关闭请求流
  50. writer.Close();
  51. //http响应所返回的字符流
  52. string responseResult = "";
  53. HttpWebResponse response = null;
  54. try
  55. {
  56. //获取http返回的响应流
  57. response = (HttpWebResponse)httpWebRequest.GetResponse();
  58. }
  59. catch (WebException ex)
  60. {
  61.       response = (HttpWebResponse)ex.Response;
  62. }
  63. //读取响应流内容
  64. StreamReader sr = new StreamReader(response.GetResponseStream());
  65. responseResult = sr.ReadToEnd();
  66. //关闭读取器
  67. sr.Close();
  68. return responseResult;
  69. }

Web后台模拟前端post(带NTLM验证)的更多相关文章

  1. [转]Web后台模拟前端post(带NTLM验证)

    本文转自:http://www.cnblogs.com/pzstudyhard/p/4805885.html using System.Data; using System.Net; using Sy ...

  2. 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证

    原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证 chsakell分享了前端使用AngularJS,后端使用ASP. ...

  3. web的前台、后台、前端、后端

    前台:呈现给用户的视觉和基本的操作.后台:用户浏览网页时,我们看不见的后台数据跑动.后台包括前端,后端.前端:对应我们写的html .javascript 等网页语言作用在前端网页.后端:对应jsp. ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(33)-数据验证共享

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(33)-数据验证共享 注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可 ...

  5. 腾讯Web工程师的前端书单

    2014年一月以来,自己接触web前端开发已经两年多了,记录一下自己前端学习路上看过的,以及道听途说的一些书,基本上按照由浅入深来介绍. JavaScript 入门 <JavaScript权威指 ...

  6. Web后台快速开发框架(.NET Core)

    Web后台快速开发框架(.NET Core) Coldairarrow 目录 目录 第1章    目录    1 第2章    简介    3 第3章    基础准备    4 3.1    开发环境 ...

  7. Web后台快速开发框架

    Web后台快速开发框架 Coldairarrow 目录 目录 第1章    目录    1 第2章    简介    3 第3章    基础准备    4 3.1    开发环境要求    4 3.2 ...

  8. 第二周作业-web后台应用开发与xml

    web后台: 网站前台和网站后台通常是相对于动态网站而言,即网站建设是基于数据库开发 的网站.基于带数据库开发的网站,一般分网站前台和网站后台.网站前台是面向网站访问用户的,通俗的说也就是给访问网站的 ...

  9. Web暴力破解--前端JS表单加密进行爆破

    0x01 前言 常见的js实现加密的方式有:md5.base64.shal,写了一个简单的demo作为测试. 0x02 代码 login.html <!DOCTYPE HTML> < ...

随机推荐

  1. C#多线程学习(三) 生产者和消费者

    前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生. ...

  2. ASP.NET Core入门(一)

    大家好,很荣幸您点了开此篇文章,和我一起来学习ASP.NET Core,此篇文字为<ASP.NET Core入门>系列中的第一篇,本系列将以一个博客系统为例,从第一行代码,到系统发布上线( ...

  3. 设置CameraRollBrowseOptions的宽高

    在利用air的CameraRoll调取ios设备的相册时需要定义位置.我们一般这么操作 var crOpts:CameraRollBrowseOptions = new CameraRollBrows ...

  4. [HAOI2010]计数(组合数学)(数位DP)

    原题题意也就是给的数的全排列小于原数的个数. 我们可以很容易的想到重复元素的排列个数的公式. 但是我们发现阶乘的话很快就会爆long long啊(如果您想写高精请便) 之后我就尝试质因数分解....但 ...

  5. 四、Centos linux系统优化

    1.     无论是哪个版本的linux,都会提供32位和64位的两个版本的镜像. i386为32位 x86_64为64位 两者的区别: 1)目标:需要大量的内存需求的行业为64位,普通用户的需求为3 ...

  6. EXPORT Man Information for Linux use COMMAND col

    col命令 是一个标准输入文本过滤器,它从标注输入设备读取文本内容,并把内容显示到标注输出设备.在许多UNIX说明文件里,都有RLF控制字符.当我们运用shell特殊字符>和>>,把 ...

  7. Oracle中对多行查询结果进行拼接

    to_char(wmsys.wm_concat(to_char( st.col_name))) as new_name to_char: 将当前值转换成字符串类型; wmsys.wm_concat:拼 ...

  8. Linux CentOs 下 安装 mysql nginx redis

    SCP 的使用 来源于: https://blog.csdn.net/qq_30968657/article/details/72912070 scp [参数] <源地址(用户名@IP地址或主机 ...

  9. Linux系统查找清理磁盘大文件方法

    本文主要介绍Linux系统磁盘使用空间不足时,如何查找大文件并进行清理的方法. 下午使用df-h检查一台服务器磁盘使用空间,发现磁盘已经使用了100%,其中/dev/mapper/vg_iavp-lv ...

  10. Thread类和Runnable接口的比较

    Thread和Runnable的联系 Thread类的定义: public class Thread extends Object implements Runnable 联系:从Thread类的定义 ...