zoukankan      html  css  js  c++  java
  • C# WebRequest

    HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。它们支持一系列有用的属性。这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的。请注意,HttpWebRequest对象不是利用new关键字通过构 造函数来创建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的。另外,你可能预计需要显式地调用一个“Send”方法,实际上不需要。接下来调用 HttpWebRequest.GetResponse()方法返回的是一个HttpWebResponse对象。你可以把HTTP响应的数据流 (stream)绑定到一个StreamReader对象,然后就可以通过ReadToEnd()方法把整个HTTP响应作为一个字符串取回。也可以通过 StreamReader.ReadLine()方法逐行取回HTTP响应的内容。

    这种技术展示了如何限制请求重定向(request redirections)的次数, 并且设置了一个超时限制。下面是HttpWebRequest的一些属性,这些属性对于轻量级的自动化测试程序是非常重要的。

    l  AllowAutoRedirect:获取或设置一个值,该值指示请求是否应跟随重定向响应。

    l  CookieContainer:获取或设置与此请求关联的cookie。

    l  Credentials:获取或设置请求的身份验证信息。

    l  KeepAlive:获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接。

    l  MaximumAutomaticRedirections:获取或设置请求将跟随的重定向的最大数目。

    l  Proxy:获取或设置请求的代理信息。

    l  SendChunked:获取或设置一个值,该值指示是否将数据分段发送到 Internet 资源。

    l  Timeout:获取或设置请求的超时值。

    l  UserAgent:获取或设置 User-agent HTTP 标头的值

    C# HttpWebRequest提交数据方式其实就是GET和POST两种,那么具体的实现以及操作注意事项是什么呢?那么本文就向你详细介绍C# HttpWebRequest提交数据方式的这两种利器。

    C# HttpWebRequest提交数据方式学习之前我们先来看看什么是HttpWebRequest,它是 .net 基类库中的一个类,在命名空间 System.Net 下面,用来使用户通过HTTP协议和服务器交互。

    C# HttpWebRequest的作用:

    HttpWebRequest对HTTP协议进行了完整的封装,对HTTP协议中的 Header, Content, Cookie 都做了属性和方法的支持,很容易就能编写出一个模拟浏览器自动登录的程序。

    C# HttpWebRequest提交数据方式:

    程序使用HTTP协议和服务器交互主要是进行数据的提交,通常数据的提交是通过 GET 和 POST 两种方式来完成,下面对这两种方式进行一下说明:

    C# HttpWebRequest提交数据方式1. GET 方式。

    GET 方式通过在网络地址附加参数来完成数据的提交,比如在地址 http://www.google.com/webhp?hl=zh-CN 中,前面部分 http://www.google.com/webhp 表示数据提交的网址,后面部分 hl=zh-CN 表示附加的参数,其中 hl 表示一个键(key), zh-CN 表示这个键对应的值(value)。程序代码如下:

    HttpWebRequest req =  

    (HttpWebRequest) HttpWebRequest.Create(  

    "http://www.google.com/webhp?hl=zh-CN" ); 

    req.Method = "GET"; 

    using (WebResponse wr = req.GetResponse()) 

       //在这里对接收到的页面内容进行处理 

    }

    C# HttpWebRequest提交数据方式2. POST 方式。

    POST 方式通过在页面内容中填写参数的方法来完成数据的提交,参数的格式和 GET 方式一样,是类似于 hl=zh-CN&newwindow=1 这样的结构。程序代码如下:

    string param = "hl=zh-CN&newwindow=1";        //参数

    byte[] bs = Encoding.ASCII.GetBytes(param);    //参数转化为ascii码

    HttpWebRequest req =   (HttpWebRequest) HttpWebRequest.Create(   "http://www.google.com/intl/zh-CN/" );  //创建request

    req.Method = "POST";    //确定传值的方式,此处为post方式传值

    req.ContentType = "application/x-www-form-urlencoded"; 

    req.ContentLength = bs.Length; 

    using (Stream reqStream = req.GetRequestStream()) 

       reqStream.Write(bs, 0, bs.Length); 

    using (WebResponse wr = req.GetResponse()) 

       //在这里对接收到的页面内容进行处理 

    在上面的代码中,我们访问了 www.google.com 的网址,分别以 GET 和 POST 方式提交了数据,并接收了返回的页面内容。然而,如果提交的参数中含有中文,那么这样的处理是不够的,需要对其进行编码,让对方网站能够识别。

    C# HttpWebRequest提交数据方式3. 使用 GET 方式提交中文数据。

    GET 方式通过在网络地址中附加参数来完成数据提交,对于中文的编码,常用的有 gb2312 和 utf8 两种,用 gb2312 方式编码访问的程序代码如下:

    Encoding myEncoding = Encoding.GetEncoding("gb2312");     //确定用哪种中文编码方式

    string address = "http://www.baidu.com/s?"   + HttpUtility.UrlEncode("参数一", myEncoding) +  "=" + HttpUtility.UrlEncode("值一", myEncoding);       //拼接数据提交的网址和经过中文编码后的中文参数

    HttpWebRequest req =   (HttpWebRequest)HttpWebRequest.Create(address);  //创建request

    req.Method = "GET";    //确定传值方式,此处为get方式

    using (WebResponse wr = req.GetResponse()) 

       //在这里对接收到的页面内容进行处理 

    在上面的程序代码中,我们以 GET 方式访问了网址 http://www.baidu.com/s ,传递了参数“参数一=值一”,由于无法告知对方提交数据的编码类型,所以编码方式要以对方的网站为标准。常见的网站中, www.baidu.com (百度)的编码方式是 gb2312, www.google.com (谷歌)的编码方式是 utf8。

    C# HttpWebRequest提交数据方式4. 使用 POST 方式提交中文数据。

    POST 方式通过在页面内容中填写参数的方法来完成数据的提交,由于提交的参数中可以说明使用的编码方式,所以理论上能获得更大的兼容性。用 gb2312 方式编码访问的程序代码如下:

    Encoding myEncoding = Encoding.GetEncoding("gb2312");  //确定中文编码方式。此处用gb2312

    string param =   HttpUtility.UrlEncode("参数一", myEncoding) +   "=" + HttpUtility.UrlEncode("值一", myEncoding) +   "&" +     HttpUtility.UrlEncode("参数二", myEncoding) +  "=" + HttpUtility.UrlEncode("值二", myEncoding); 

    byte[] postBytes = Encoding.ASCII.GetBytes(param);     //将参数转化为assic码

    HttpWebRequest req = (HttpWebRequest)  HttpWebRequest.Create( "http://www.baidu.com/s" ); 

    req.Method = "POST"; 

    req.ContentType =   "application/x-www-form-urlencoded;charset=gb2312"; 

    req.ContentLength = postBytes.Length; 

    using (Stream reqStream = req.GetRequestStream()) 

       reqStream.Write(bs, 0, bs.Length); 

    using (WebResponse wr = req.GetResponse()) 

       //在这里对接收到的页面内容进行处理 

    }  

    从上面的代码可以看出, POST 中文数据的时候,先使用 UrlEncode 方法将中文字符转换为编码后的 ASCII 码,然后提交到服务器,提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。

    以上列出了客户端程序使用HTTP协议与服务器交互的情况,常用的是 GET 和 POST 方式。现在流行的 WebService 也是通过 HTTP 协议来交互的,使用的是 POST 方法。与以上稍有所不同的是, WebService 提交的数据内容和接收到的数据内容都是使用了 XML 方式编码。所以, HttpWebRequest 也可以使用在调用 WebService 的情况下。

     1 #region 公共方法
     2         /// <summary>
     3         /// Get数据接口
     4         /// </summary>
     5         /// <param name="getUrl">接口地址</param>
     6         /// <returns></returns>
     7         private static string GetWebRequest(string getUrl)
     8         {
     9             string responseContent = "";
    10 
    11             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(getUrl);
    12             request.ContentType = "application/json";
    13             request.Method = "GET";
    14 
    15             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    16             //在这里对接收到的页面内容进行处理
    17             using (Stream resStream = response.GetResponseStream())
    18             {
    19                 using (StreamReader reader = new StreamReader(resStream, Encoding.UTF8))
    20                 {
    21                     responseContent = reader.ReadToEnd().ToString();
    22                 }
    23             }
    24             return responseContent;
    25         }
    26         /// <summary>
    27         /// Post数据接口
    28         /// </summary>
    29         /// <param name="postUrl">接口地址</param>
    30         /// <param name="paramData">提交json数据</param>
    31         /// <param name="dataEncode">编码方式(Encoding.UTF8)</param>
    32         /// <returns></returns>
    33         private static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
    34         {
    35             string responseContent = string.Empty;
    36             try
    37             {
    38                 byte[] byteArray = dataEncode.GetBytes(paramData); //转化
    39                 HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
    40                 webReq.Method = "POST";
    41                 webReq.ContentType = "application/x-www-form-urlencoded";
    42                 webReq.ContentLength = byteArray.Length;
    43                 using (Stream reqStream = webReq.GetRequestStream())
    44                 {
    45                     reqStream.Write(byteArray, 0, byteArray.Length);//写入参数
    46                     //reqStream.Close();
    47                 }
    48                 using (HttpWebResponse response = (HttpWebResponse)webReq.GetResponse())
    49                 {
    50                     //在这里对接收到的页面内容进行处理
    51                     using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default))
    52                     {
    53                         responseContent = sr.ReadToEnd().ToString();
    54                     }
    55                 }
    56             }
    57             catch (Exception ex)
    58             {
    59                 return ex.Message;
    60             }
    61             return responseContent;
    62         }
    63 
    64         #endregion
    View Code

    post支持cookie

     1 /// <summary>
     2         /// 发起Post请求(采用HttpWebRequest,支持传Cookie)
     3         /// </summary>
     4         /// <param name="strUrl">请求Url</param>
     5         /// <param name="formData">发送的表单数据</param>
     6         /// <param name="strResult">返回请求结果(如果请求失败,返回异常消息)</param>
     7         /// <param name="cookieContainer">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
     8         /// <returns>返回:是否请求成功</returns>
     9         public static bool HttpPost(string strUrl, Dictionary<string, string> formData, CookieContainer cookieContainer, out string strResult)
    10         {
    11             string strPostData = null;
    12             if (formData != null && formData.Count > 0)
    13             {
    14                 StringBuilder sbData = new StringBuilder();
    15                 int i = 0;
    16                 foreach (KeyValuePair<string, string> data in formData)
    17                 {
    18                     if (i > 0)
    19                     {
    20                         sbData.Append("&");
    21                     }
    22                     sbData.AppendFormat("{0}={1}", data.Key, data.Value);
    23                     i++;
    24                 }
    25                 strPostData = sbData.ToString();
    26             }
    27 
    28             byte[] postBytes = string.IsNullOrEmpty(strPostData) ? new byte[0] : Encoding.UTF8.GetBytes(strPostData);
    29 
    30             return HttpPost(strUrl, postBytes, cookieContainer, out strResult);
    31         }
    View Code

    post上传文件

     1 /// <summary>
     2         /// 发起Post文件请求(采用HttpWebRequest,支持传Cookie)
     3         /// </summary>
     4         /// <param name="strUrl">请求Url</param>
     5         /// <param name="strFilePostName">上传文件的PostName</param>
     6         /// <param name="strFilePath">上传文件路径</param>
     7         /// <param name="cookieContainer">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
     8         /// <param name="strResult">返回请求结果(如果请求失败,返回异常消息)</param>
     9         /// <returns>返回:是否请求成功</returns>
    10         public static bool HttpPostFile(string strUrl, string strFilePostName, string strFilePath, CookieContainer cookieContainer, out string strResult)
    11         {
    12             HttpWebRequest request = null;
    13             FileStream fileStream = FileHelper.GetFileStream(strFilePath);
    14 
    15             try
    16             {
    17                 if (fileStream == null)
    18                 {
    19                     throw new FileNotFoundException();
    20                 }
    21 
    22                 request = (HttpWebRequest)WebRequest.Create(strUrl);
    23                 request.Method = "POST";
    24                 request.KeepAlive = false;
    25                 request.Timeout = 30000;
    26 
    27                 if (cookieContainer != null)
    28                 {
    29                     request.CookieContainer = cookieContainer;
    30                 }
    31 
    32                 string boundary = string.Format("---------------------------{0}", DateTime.Now.Ticks.ToString("x"));
    33 
    34                 byte[] header = Encoding.UTF8.GetBytes(string.Format("--{0}
    Content-Disposition: form-data; name="{1}"; filename="{2}"
    Content-Type: application/octet-stream
    
    ",
    35                     boundary, strFilePostName, Path.GetFileName(strFilePath)));
    36                 byte[] footer = Encoding.UTF8.GetBytes(string.Format("
    --{0}--
    ", boundary));
    37 
    38                 request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
    39                 request.ContentLength = header.Length + fileStream.Length + footer.Length;
    40 
    41                 using (Stream reqStream = request.GetRequestStream())
    42                 {
    43                     // 写入分割线及数据信息
    44                     reqStream.Write(header, 0, header.Length);
    45 
    46                     // 写入文件
    47                     FileHelper.WriteFile(reqStream, fileStream);
    48 
    49                     // 写入尾部
    50                     reqStream.Write(footer, 0, footer.Length);
    51                 }
    52 
    53                 strResult = GetResponseResult(request, cookieContainer);
    54             }
    55             catch (Exception ex)
    56             {
    57                 strResult = ex.Message;
    58                 return false;
    59             }
    60             finally
    61             {
    62                 if (request != null)
    63                 {
    64                     request.Abort();
    65                 }
    66                 if (fileStream != null)
    67                 {
    68                     fileStream.Close();
    69                 }
    70             }
    71 
    72             return true;
    73         }
    74 
    75 
    76         /// <summary>
    77         /// 获取请求结果字符串
    78         /// </summary>
    79         /// <param name="request">请求对象(发起请求之后)</param>
    80         /// <param name="cookieContainer">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>
    81         /// <returns>返回请求结果字符串</returns>
    82         private static string GetResponseResult(HttpWebRequest request, CookieContainer cookieContainer = null)
    83         {
    84             using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
    85             {
    86                 if (cookieContainer != null)
    87                 {
    88                     response.Cookies = cookieContainer.GetCookies(response.ResponseUri);
    89                 }
    90                 using (Stream rspStream = response.GetResponseStream())
    91                 {
    92                     using (StreamReader reader = new StreamReader(rspStream, Encoding.UTF8))
    93                     {
    94                         return reader.ReadToEnd();
    95                     }
    96                 }
    97             }
    98         }
    View Code

    OAuth头部 

     1 //构造OAuth头部 
     2 StringBuilder oauthHeader = new StringBuilder(); 
     3 oauthHeader.AppendFormat("OAuth realm="", oauth_consumer_key={0}, ", apiKey); 
     4 oauthHeader.AppendFormat("oauth_nonce={0}, ", nonce); 
     5 oauthHeader.AppendFormat("oauth_timestamp={0}, ", timeStamp); 
     6 oauthHeader.AppendFormat("oauth_signature_method={0}, ", "HMAC-SHA1"); 
     7 oauthHeader.AppendFormat("oauth_version={0}, ", "1.0"); 
     8 oauthHeader.AppendFormat("oauth_signature={0}, ", sig); 
     9 oauthHeader.AppendFormat("oauth_token={0}", accessToken); 
    10 
    11 //构造请求 
    12 StringBuilder requestBody = new StringBuilder(""); 
    13 Encoding encoding = Encoding.GetEncoding("utf-8"); 
    14 byte[] data = encoding.GetBytes(requestBody.ToString()); 
    15 
    16 // Http Request的设置 
    17 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); 
    18 request.Headers.Set("Authorization", oauthHeader.ToString());
    19 //request.Headers.Add("Authorization", authorization); 
    20 request.ContentType = "application/atom+xml"; 
    21 request.Method = "GET"; 
    View Code

    https://www.cnblogs.com/shadowtale/p/3372735.html

      1 1.POST方法(httpWebRequest)
      2 
      3  
      4 
      5 
      6 
      7 //body是要传递的参数,格式"roleId=1&uid=2"
      8 //post的cotentType填写:"application/x-www-form-urlencoded"
      9 //soap填写:"text/xml; charset=utf-8"
     10     public static string PostHttp(string url, string body, string contentType)
     11     {
     12         HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
     13 
     14         httpWebRequest.ContentType = contentType;
     15         httpWebRequest.Method = "POST";
     16         httpWebRequest.Timeout = 20000;
     17 
     18         byte[] btBodys = Encoding.UTF8.GetBytes(body);
     19         httpWebRequest.ContentLength = btBodys.Length;
     20         httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
     21 
     22         HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
     23         StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
     24         string responseContent = streamReader.ReadToEnd();
     25 
     26         httpWebResponse.Close();
     27         streamReader.Close();
     28         httpWebRequest.Abort();
     29         httpWebResponse.Close();
     30 
     31         return responseContent;
     32     }
     33 
     34 POST方法(httpWebRequest)
     35 
     36 
     37 2.POST方法(WebClient)
     38 
     39 
     40 
     41 /// <summary>
     42         /// 通过WebClient类Post数据到远程地址,需要Basic认证;
     43         /// 调用端自己处理异常
     44         /// </summary>
     45         /// <param name="uri"></param>
     46         /// <param name="paramStr">name=张三&age=20</param>
     47         /// <param name="encoding">请先确认目标网页的编码方式</param>
     48         /// <param name="username"></param>
     49         /// <param name="password"></param>
     50         /// <returns></returns>
     51         public static string Request_WebClient(string uri, string paramStr, Encoding encoding, string username, string password)
     52         {
     53             if (encoding == null)
     54                 encoding = Encoding.UTF8;
     55 
     56             string result = string.Empty;
     57 
     58             WebClient wc = new WebClient();
     59 
     60             // 采取POST方式必须加的Header
     61             wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
     62 
     63             byte[] postData = encoding.GetBytes(paramStr);
     64 
     65             if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
     66             {
     67                 wc.Credentials = GetCredentialCache(uri, username, password);
     68                 wc.Headers.Add("Authorization", GetAuthorization(username, password));
     69             }
     70 
     71             byte[] responseData = wc.UploadData(uri, "POST", postData); // 得到返回字符流
     72             return encoding.GetString(responseData);// 解码                  
     73         }
     74 
     75 POST方法(WebClient)
     76 
     77 3.Get方法(httpWebRequest)
     78 
     79 
     80 
     81 public static string GetHttp(string url, HttpContext httpContext)
     82     {
     83         string queryString = "?";
     84 
     85         foreach (string key in httpContext.Request.QueryString.AllKeys)
     86         {
     87             queryString += key + "=" + httpContext.Request.QueryString[key] + "&";
     88         }
     89 
     90         queryString = queryString.Substring(0, queryString.Length - 1);
     91 
     92         HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url + queryString);
     93 
     94         httpWebRequest.ContentType = "application/json";
     95         httpWebRequest.Method = "GET";
     96         httpWebRequest.Timeout = 20000;
     97 
     98         //byte[] btBodys = Encoding.UTF8.GetBytes(body);
     99         //httpWebRequest.ContentLength = btBodys.Length;
    100         //httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
    101 
    102         HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    103         StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
    104         string responseContent = streamReader.ReadToEnd();
    105 
    106         httpWebResponse.Close();
    107         streamReader.Close();
    108 
    109         return responseContent;
    110     }
    111 
    112 Get方法(HttpWebRequest)
    113 
    114 4.basic验证的WebRequest/WebResponse
    115 
    116 
    117 
    118 /// <summary>
    119         /// 通过 WebRequest/WebResponse 类访问远程地址并返回结果,需要Basic认证;
    120         /// 调用端自己处理异常
    121         /// </summary>
    122         /// <param name="uri"></param>
    123         /// <param name="timeout">访问超时时间,单位毫秒;如果不设置超时时间,传入0</param>
    124         /// <param name="encoding">如果不知道具体的编码,传入null</param>
    125         /// <param name="username"></param>
    126         /// <param name="password"></param>
    127         /// <returns></returns>
    128         public static string Request_WebRequest(string uri, int timeout, Encoding encoding, string username, string password)
    129         {
    130             string result = string.Empty;
    131 
    132             WebRequest request = WebRequest.Create(new Uri(uri));
    133 
    134             if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
    135             {
    136                 request.Credentials = GetCredentialCache(uri, username, password);
    137                 request.Headers.Add("Authorization", GetAuthorization(username, password));
    138             }
    139 
    140             if (timeout > 0)
    141                 request.Timeout = timeout;
    142 
    143             WebResponse response = request.GetResponse();
    144             Stream stream = response.GetResponseStream();
    145             StreamReader sr = encoding == null ? new StreamReader(stream) : new StreamReader(stream, encoding);
    146 
    147             result = sr.ReadToEnd();
    148 
    149             sr.Close();
    150             stream.Close();
    151 
    152             return result;
    153         }
    154 
    155         #region # 生成 Http Basic 访问凭证 #
    156 
    157         private static CredentialCache GetCredentialCache(string uri, string username, string password)
    158         {
    159             string authorization = string.Format("{0}:{1}", username, password);
    160 
    161             CredentialCache credCache = new CredentialCache();
    162             credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
    163 
    164             return credCache;
    165         }
    166 
    167         private static string GetAuthorization(string username, string password)
    168         {
    169             string authorization = string.Format("{0}:{1}", username, password);
    170 
    171             return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
    172         }
    173 
    174         #endregion
    175 
    176 basic验证的WebRequest/WebResponse
    177 
    178  
    179 
    180 C#语言写的关于HttpWebRequest 类的使用方法
    181 
    182 http://www.jb51.net/article/57156.htm
    183 
    184 
    185 
    186 using System;
    187 
    188 using System.Collections.Generic;
    189 
    190 using System.IO;
    191 
    192 using System.Net;
    193 
    194 using System.Text;
    195 
    196 namespace HttpWeb
    197 
    198 {
    199 
    200     /// <summary> 
    201 
    202     ///  Http操作类 
    203 
    204     /// </summary> 
    205 
    206     public static class httptest
    207 
    208     {
    209 
    210         /// <summary> 
    211 
    212         ///  获取网址HTML 
    213 
    214         /// </summary> 
    215 
    216         /// <param name="URL">网址 </param> 
    217 
    218         /// <returns> </returns> 
    219 
    220         public static string GetHtml(string URL)
    221 
    222         {
    223 
    224             WebRequest wrt;
    225 
    226             wrt = WebRequest.Create(URL);
    227 
    228             wrt.Credentials = CredentialCache.DefaultCredentials;
    229 
    230             WebResponse wrp;
    231 
    232             wrp = wrt.GetResponse();
    233 
    234             string reader = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
    235 
    236             try
    237 
    238             {
    239 
    240                 wrt.GetResponse().Close();
    241 
    242             }
    243 
    244             catch (WebException ex)
    245 
    246             {
    247 
    248                 throw ex;
    249 
    250             }
    251 
    252             return reader;
    253 
    254         }
    255 
    256         /// <summary> 
    257 
    258         /// 获取网站cookie 
    259 
    260         /// </summary> 
    261 
    262         /// <param name="URL">网址 </param> 
    263 
    264         /// <param name="cookie">cookie </param> 
    265 
    266         /// <returns> </returns> 
    267 
    268         public static string GetHtml(string URL, out string cookie)
    269 
    270         {
    271 
    272             WebRequest wrt;
    273 
    274             wrt = WebRequest.Create(URL);
    275 
    276             wrt.Credentials = CredentialCache.DefaultCredentials;
    277 
    278             WebResponse wrp;
    279 
    280             wrp = wrt.GetResponse();
    281             string html = new StreamReader(wrp.GetResponseStream(), Encoding.GetEncoding("gb2312")).ReadToEnd();
    282 
    283             try
    284 
    285             {
    286 
    287                 wrt.GetResponse().Close();
    288 
    289             }
    290 
    291             catch (WebException ex)
    292 
    293             {
    294 
    295                 throw ex;
    296 
    297             }
    298 
    299             cookie = wrp.Headers.Get("Set-Cookie");
    300 
    301             return html;
    302 
    303         }
    304 
    305         public static string GetHtml(string URL, string postData, string cookie, out string header, string server)
    306 
    307         {
    308 
    309             return GetHtml(server, URL, postData, cookie, out header);
    310 
    311         }
    312 
    313         public static string GetHtml(string server, string URL, string postData, string cookie, out string header)
    314 
    315         {
    316 
    317             byte[] byteRequest = Encoding.GetEncoding("gb2312").GetBytes(postData);
    318 
    319             return GetHtml(server, URL, byteRequest, cookie, out header);
    320 
    321         }
    322 
    323         public static string GetHtml(string server, string URL, byte[] byteRequest, string cookie, out string header)
    324 
    325         {
    326 
    327             byte[] bytes = GetHtmlByBytes(server, URL, byteRequest, cookie, out header);
    328 
    329             Stream getStream = new MemoryStream(bytes);
    330 
    331             StreamReader streamReader = new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
    332 
    333             string getString = streamReader.ReadToEnd();
    334 
    335             streamReader.Close();
    336 
    337             getStream.Close();
    338 
    339             return getString;
    340 
    341         }
    342 
    343         /// <summary> 
    344 
    345         /// Post模式浏览 
    346 
    347         /// </summary> 
    348 
    349         /// <param name="server">服务器地址 </param> 
    350 
    351         /// <param name="URL">网址 </param> 
    352 
    353         /// <param name="byteRequest"></param> 
    354 
    355         /// <param name="cookie">cookie </param> 
    356 
    357         /// <param name="header">句柄 </param> 
    358 
    359         /// <returns> </returns> 
    360 
    361         public static byte[] GetHtmlByBytes(string server, string URL, byte[] byteRequest, string cookie, out string header)
    362 
    363         {
    364 
    365             long contentLength;
    366 
    367             HttpWebRequest httpWebRequest;
    368 
    369             HttpWebResponse webResponse;
    370 
    371             Stream getStream;
    372 
    373             httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
    374 
    375             CookieContainer co = new CookieContainer();
    376 
    377             co.SetCookies(new Uri(server), cookie);
    378 
    379             httpWebRequest.CookieContainer = co;
    380 
    381             httpWebRequest.ContentType = "application/x-www-form-urlencoded";
    382 
    383             httpWebRequest.Accept =
    384 
    385                 "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*";
    386 
    387             httpWebRequest.Referer = server;
    388 
    389             httpWebRequest.UserAgent =
    390 
    391                 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
    392 
    393             httpWebRequest.Method = "Post";
    394 
    395             httpWebRequest.ContentLength = byteRequest.Length;
    396 
    397             Stream stream;
    398 
    399             stream = httpWebRequest.GetRequestStream();
    400 
    401             stream.Write(byteRequest, 0, byteRequest.Length);
    402 
    403             stream.Close();
    404 
    405             webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    406 
    407             header = webResponse.Headers.ToString();
    408 
    409             getStream = webResponse.GetResponseStream();
    410 
    411             contentLength = webResponse.ContentLength;
    412 
    413             byte[] outBytes = new byte[contentLength];
    414 
    415             outBytes = ReadFully(getStream);
    416 
    417             getStream.Close();
    418 
    419             return outBytes;
    420 
    421         }
    422 
    423         public static byte[] ReadFully(Stream stream)
    424 
    425         {
    426 
    427             byte[] buffer = new byte[128];
    428 
    429             using (MemoryStream ms = new MemoryStream())
    430 
    431             {
    432 
    433                 while (true)
    434 
    435                 {
    436 
    437                     int read = stream.Read(buffer, 0, buffer.Length);
    438 
    439                     if (read <= 0)
    440 
    441                         return ms.ToArray();
    442 
    443                     ms.Write(buffer, 0, read);
    444 
    445                 }
    446 
    447             }
    448 
    449         }
    450 
    451         /// <summary> 
    452 
    453         /// Get模式 
    454 
    455         /// </summary> 
    456 
    457         /// <param name="URL">网址 </param> 
    458 
    459         /// <param name="cookie">cookies </param> 
    460 
    461         /// <param name="header">句柄 </param> 
    462 
    463         /// <param name="server">服务器 </param> 
    464 
    465         /// <param name="val">服务器 </param> 
    466 
    467         /// <returns> </returns> 
    468 
    469         public static string GetHtml(string URL, string cookie, out string header, string server)
    470 
    471         {
    472 
    473             return GetHtml(URL, cookie, out header, server, "");
    474 
    475         }
    476 
    477         /// <summary> 
    478 
    479         /// Get模式浏览 
    480 
    481         /// </summary> 
    482 
    483         /// <param name="URL">Get网址 </param> 
    484 
    485         /// <param name="cookie">cookie </param> 
    486 
    487         /// <param name="header">句柄 </param> 
    488 
    489         /// <param name="server">服务器地址 </param> 
    490 
    491         /// <param name="val"> </param> 
    492 
    493         /// <returns> </returns> 
    494 
    495         public static string GetHtml(string URL, string cookie, out string header, string server, string val)
    496 
    497         {
    498 
    499             HttpWebRequest httpWebRequest;
    500 
    501             HttpWebResponse webResponse;
    502 
    503             Stream getStream;
    504 
    505             StreamReader streamReader;
    506 
    507             string getString = "";
    508 
    509             httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL);
    510 
    511             httpWebRequest.Accept = "*/*";
    512 
    513             httpWebRequest.Referer = server;
    514 
    515             CookieContainer co = new CookieContainer();
    516 
    517             co.SetCookies(new Uri(server), cookie);
    518 
    519             httpWebRequest.CookieContainer = co;
    520 
    521             httpWebRequest.UserAgent =
    522 
    523                 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)";
    524 
    525             httpWebRequest.Method = "GET";
    526 
    527             webResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    528 
    529             header = webResponse.Headers.ToString();
    530 
    531             getStream = webResponse.GetResponseStream();
    532 
    533             streamReader = new StreamReader(getStream, Encoding.GetEncoding("gb2312"));
    534 
    535             getString = streamReader.ReadToEnd();
    536 
    537             streamReader.Close();
    538 
    539             getStream.Close();
    540 
    541             return getString;
    542 
    543         }
    544 
    545    }
    546 
    547 }
    548 
    549  有空查看:
    550 
    551 
    552 
    553     /// <summary>
    554     /// 作用描述: WebRequest操作类
    555     /// </summary>
    556     public static class CallWebRequest
    557     {
    558         /// <summary>
    559         /// 通过GET请求获取数据
    560         /// </summary>
    561         /// <param name="url"></param>
    562         /// <returns></returns>
    563         public static string Get(string url)
    564         {
    565             HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    566             //每次请求绕过代理,解决第一次调用慢的问题
    567             request.Proxy = null;
    568             //多线程并发调用时默认2个http连接数限制的问题,讲其设为1000
    569             ServicePoint currentServicePoint = request.ServicePoint;
    570             currentServicePoint.ConnectionLimit = 1000;
    571             HttpWebResponse response = request.GetResponse() as HttpWebResponse;
    572             string str;
    573             using (Stream responseStream = response.GetResponseStream())
    574             {
    575                 Encoding encode = Encoding.GetEncoding("utf-8");
    576                 StreamReader reader = new StreamReader(responseStream, encode);
    577                 str = reader.ReadToEnd();          
    578             }
    579             response.Close();
    580             response = null;
    581             request.Abort();
    582             request = null;
    583             return str;
    584         }
    585 
    586         /// <summary>
    587         /// 通过POST请求传递数据
    588         /// </summary>
    589         /// <param name="url"></param>
    590         /// <param name="postData"></param>
    591         /// <returns></returns>
    592         public static string Post(string url, string postData)
    593         {
    594             HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
    595 
    596             //将发送数据转换为二进制格式
    597             byte[] byteArray = Encoding.UTF8.GetBytes(postData);
    598             //要POST的数据大于1024字节的时候, 浏览器并不会直接就发起POST请求, 而是会分为俩步:
    599             //1. 发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据
    600             //2. 接收到Server返回的100-continue应答以后, 才把数据POST给Server
    601             //直接关闭第一步验证
    602             request.ServicePoint.Expect100Continue = false;
    603             //是否使用Nagle:不使用,提高效率 
    604             request.ServicePoint.UseNagleAlgorithm = false;
    605             //设置最大连接数
    606             request.ServicePoint.ConnectionLimit = 65500;
    607             //指定压缩方法
    608             //request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
    609             request.KeepAlive = false;
    610             //request.ContentType = "application/json";
    611             request.ContentType = "application/x-www-form-urlencoded";
    612             
    613             request.Method = "POST";
    614             request.Timeout = 20000;
    615             request.ContentLength = byteArray.Length;
    616             //关闭缓存
    617             request.AllowWriteStreamBuffering = false;
    618 
    619             //每次请求绕过代理,解决第一次调用慢的问题
    620             request.Proxy = null;
    621             //多线程并发调用时默认2个http连接数限制的问题,讲其设为1000
    622             ServicePoint currentServicePoint = request.ServicePoint;
    623 
    624             Stream dataStream = request.GetRequestStream();
    625             dataStream.Write(byteArray, 0, byteArray.Length);
    626             dataStream.Close();
    627 
    628             WebResponse response = request.GetResponse();
    629             //获取服务器返回的数据流
    630             dataStream = response.GetResponseStream();
    631             StreamReader reader = new StreamReader(dataStream);
    632             string responseFromServer = reader.ReadToEnd();
    633             reader.Close();
    634             dataStream.Close();
    635             request.Abort();
    636             response.Close();
    637             reader.Dispose();
    638             dataStream.Dispose();
    639             return responseFromServer;
    640         }
    641     }
    642 
    643  
    644 
    645 
    646 
    647     /// <summary>
    648     /// 用于外部接口调用封装
    649     /// </summary>
    650     public static class ApiInterface
    651     {
    652 
    653         /// <summary>
    654         ///验证密码是否正确
    655         /// </summary>
    656         public static Api_ToConfig<object> checkPwd(int userId, string old)
    657         {
    658             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/checkPwd";
    659             var data = Json.ToObject<Api_ToConfig<object>>(CallWebRequest.Post(url + "?id=" + userId, "&oldPwd=" + old));
    660             //var data = Json.ToObject<Api_ToConfig<object>>(CallWebRequest.Post(url, "{"id":" + userId + ",oldPwd:"" + old + "",newPwd:"" + pwd + ""}"));
    661             return data;
    662         }
    663 
    664         /// <summary>
    665         ///
    666         /// </summary>
    667         public static Api_ToConfig<object> UpdatePassword(int userId, string pwd, string old)
    668         {
    669             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/updatePwd";
    670             var data = Json.ToObject<Api_ToConfig<object>>(CallWebRequest.Post(url + "?id=" + userId + "&oldPwd=" + old, "&newPwd=" + pwd));
    671             //var data = Json.ToObject<Api_ToConfig<object>>(CallWebRequest.Post(url, "{"id":" + userId + ",oldPwd:"" + old + "",newPwd:"" + pwd + ""}"));
    672             return data;
    673         }
    674 
    675 
    676 
    677 
    678         private static DateTime GetTime(string timeStamp)
    679         {
    680             DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
    681             long lTime = long.Parse(timeStamp + "0000");
    682             TimeSpan toNow = new TimeSpan(lTime); return dtStart.Add(toNow);
    683         }
    684 
    685 
    686         #region 公共方法
    687 
    688         /// <summary>
    689         /// 配置文件key
    690         /// </summary>
    691         /// <param name="key"></param>
    692         /// <param name="isOutKey"></param>
    693         /// <returns></returns>
    694         public static string GetConfig(string key, bool isOutKey = false)
    695         {
    696             //  CacheRedis.Cache.RemoveObject(RedisKey.ConfigList);
    697             var data = CacheRedis.Cache.Get<Api_BaseToConfig<Api_Config>>(RedisKey.ConfigList);
    698 
    699             //  var data = new Api_BaseToConfig<Api_Config>();
    700             if (data == null)
    701             {
    702                 string dataCenterUrl = WebConfigManager.GetAppSettings("DataCenterUrl");
    703                 string configurationInfoListByFilter = WebConfigManager.GetAppSettings("ConfigurationInfoListByFilter");
    704 
    705                 string systemCoding = WebConfigManager.GetAppSettings("SystemCoding");
    706                 string nodeIdentifier = WebConfigManager.GetAppSettings("NodeIdentifier");
    707                 string para = "systemIdf=" + systemCoding + "&nodeIdf=" + nodeIdentifier + "";
    708                 //string para = "{"systemIdf":"" + systemCoding + "","nodeIdf":"" + nodeIdentifier + ""}";
    709 
    710                 string result = CallWebRequest.Post(dataCenterUrl + "/rest" + configurationInfoListByFilter, para);
    711                 data =
    712                     Json.ToObject<Api_BaseToConfig<Api_Config>>(result);
    713                 CacheRedis.Cache.Set(RedisKey.ConfigList, data);
    714             }
    715             if (data.Status)
    716             {
    717                 if (isOutKey && ConfigServer.IsOutside())
    718                 {
    719                     key += "_outside";
    720                 }
    721                 key = key.ToLower();
    722                 var firstOrDefault = data.Data.FirstOrDefault(e => e.Identifier.ToLower() == key);
    723                 if (firstOrDefault != null)
    724                 {
    725                     return firstOrDefault.Value;
    726                 }
    727                 else
    728                 {
    729                     if (key.IndexOf("_outside") > -1)
    730                     {
    731                         firstOrDefault = data.Data.FirstOrDefault(e => e.Identifier == key.Substring(0, key.LastIndexOf("_outside")));
    732                         if (firstOrDefault != null)
    733                             return firstOrDefault.Value;
    734                     }
    735                 }
    736             }
    737             return "";
    738         }
    739 
    740         public static string WebPostRequest(string url, string postData)
    741         {
    742             return CallWebRequest.Post(url, postData);
    743         }
    744         public static string WebGetRequest(string url)
    745         {
    746             return CallWebRequest.Get(url);
    747         }
    748 
    749         #endregion
    750 
    751 
    752         #region 参数转换方法
    753         private static string ConvertClassIds(string classIds)
    754         {
    755             var list = classIds.Split(',');
    756             StringBuilder sb = new StringBuilder("{"class_id_list": [");
    757             foreach (var s in list)
    758             {
    759                 sb.Append("{"classId": "" + s + ""},");
    760             }
    761             if (list.Any())
    762                 sb.Remove(sb.Length - 1, 1);
    763 
    764             sb.Append("]}");
    765 
    766             return sb.ToString();
    767         }
    768 
    769         private static string ConvertLabIds(string labIds)
    770         {
    771             var list = labIds.Split(',');
    772             StringBuilder sb = new StringBuilder("{"lab_id_list": [");
    773             foreach (var s in list)
    774             {
    775                 sb.Append("{"labId": "" + s + ""},");
    776             }
    777             if (list.Any())
    778                 sb.Remove(sb.Length - 1, 1);
    779 
    780             sb.Append("]}");
    781 
    782             return sb.ToString();
    783         }
    784 
    785         private static string ConvertCardNos(string cardNos)
    786         {
    787             var list = cardNos.Split(',');
    788             StringBuilder sb = new StringBuilder("{"student_cardNos_list": [");
    789             foreach (var s in list)
    790             {
    791                 sb.Append("{"stuCardNo": "" + s + ""},");
    792             }
    793             if (list.Any())
    794                 sb.Remove(sb.Length - 1, 1);
    795 
    796             sb.Append("]}");
    797 
    798             return sb.ToString();
    799         }
    800         #endregion
    801 
    802 
    803 
    804         /// <summary>
    805         /// 设置公文已读
    806         /// </summary>
    807         /// <param name="beginTime"></param>
    808         /// <param name="endTime"></param>
    809         /// <param name="userId"></param>
    810         /// <param name="currentPage"></param>
    811         /// <param name="pageSize"></param>
    812         /// <returns></returns>
    813         public static Api_ToConfig<object> FlowService(string id)
    814         {
    815             var url = WebConfigManager.GetAppSettings("FlowService");
    816             var data = Json.ToObject<Api_ToConfig<object>>(CallWebRequest.Post(url + "?Copyid=" + id, ""));
    817             return data;
    818         }
    819 
    820 
    821         /// <summary>
    822         ///获取OA工作流数据
    823         /// </summary>
    824         public static string getOAWorkFlowData(string userName, string userId)
    825         {
    826             var url = GetConfig("platform.application.oa.url") + WebConfigManager.GetAppSettings("OAWorkFlowData");
    827             var data = CallWebRequest.Post(url, "&account=" + userName + "&userId=" + userId);
    828             return data;
    829 
    830         }
    831 
    832         public static List<Api_Course> GetDreamClassCourse(string userId)
    833         {
    834             List<Api_Course> list = new List<Api_Course>();
    835             list = CacheRedis.Cache.Get<List<Api_Course>>(RedisKey.DreamCourse + userId);
    836             if (list != null && list.Count > 0)
    837                 return list;
    838 
    839             var url = GetConfig("platform.system.dreamclass.url", true) + "rest/getTeacherCourseInfo";
    840             var result = Json.ToObject<ApiResult<Api_Course>>(CallWebRequest.Post(url, "&userId=" + userId));
    841             if (result.state)
    842                 list = result.data;
    843             CacheRedis.Cache.Set(RedisKey.DreamCourse + userId, list, 30);//缓存30分钟失效
    844             return list;
    845         }
    846 
    847         /// <summary>
    848         /// 用户信息
    849         /// </summary>
    850         /// <param name="userId"></param>
    851         /// <returns></returns>
    852         public static Api_User GetUserInfoByUserName(string userName)
    853         {
    854             var model = new Api_User();
    855             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/getUserInfoByUserName";
    856             var result = Json.ToObject<ApiBase<Api_User>>(CallWebRequest.Post(url, "&userName=" + userName));
    857             if (result.status == true && result.data != null)
    858                 model = result.data;
    859             return model;
    860         }
    861 
    862         public static Api_User GetUserInfoByUserId(string userId)
    863         {
    864             var model = new Api_User();
    865             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/getUserInfoByUserId";
    866             var result = Json.ToObject<ApiBase<Api_User>>(CallWebRequest.Get(url + "?userId=" + userId));
    867             if (result.status == true && result.data != null)
    868                 model = result.data;
    869             return model;
    870         }
    871 
    872         public static Api_User GetUserByUserId(string userId)
    873         {
    874             var model = new Api_User();
    875             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/getUserByUserId";
    876             var result = Json.ToObject<ApiBase<Api_User>>(CallWebRequest.Get(url + "?userId=" + userId));
    877             if (result.status == true && result.data != null)
    878                 model = result.data;
    879             return model;
    880         }
    881 
    882 
    883         public static ApiBase<string> UserExist(string userName)
    884         {
    885             ApiBase<string> result = new ApiBase<string>();
    886             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/checkUserExists";
    887             result = Json.ToObject<ApiBase<string>>(CallWebRequest.Post(url, "&userName=" + userName));
    888             return result;
    889 
    890         }
    891         public static ApiBase<string> CheckUserPwd(string userName, string pwd)
    892         {
    893             ApiBase<string> result = new ApiBase<string>();
    894             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/checkUserPsw";
    895             result = Json.ToObject<ApiBase<string>>(CallWebRequest.Post(url, "&userName=" + userName + "&psw=" + pwd));
    896             return result;
    897 
    898         }
    899         public static ApiBase<Api_AnswerQuestion> GetAnswerQuestion(string userName)
    900         {
    901             ApiBase<Api_AnswerQuestion> result = new ApiBase<Api_AnswerQuestion>();
    902             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/safety/getSafetyByUserName";
    903             result = Json.ToObject<ApiBase<Api_AnswerQuestion>>(CallWebRequest.Post(url, "&userName=" + userName));
    904             return result;
    905         }
    906 
    907         public static ApiBase<string> ResetUserPassword(string userName, string newPassWord)
    908         {
    909             ApiBase<string> result = new ApiBase<string>();
    910             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/resetUserPasswordByUserName";
    911             result = Json.ToObject<ApiBase<string>>(CallWebRequest.Post(url, "&userName=" + userName + "&newPassWord=" + newPassWord));
    912             return result;
    913         }
    914         public static ApiBase<string> ChangeUserSafeAnswer(string userId, string answer1, string answer2, string answer3, string safeId)
    915         {
    916             ApiBase<string> result = new ApiBase<string>();
    917             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/safety/batchUpdageSafety";
    918             result = Json.ToObject<ApiBase<string>>(CallWebRequest.Post(url, "&data=[{editor:"" + userId + "",safetyAnswerOne:"" + answer1 + "",safetyAnswerTwo:"" + answer2 + "",safetyAnswerThree:"" + answer3 + "",safetyId:" + safeId + "}]"));
    919             return result;
    920         }
    921 
    922         public static ApiBase<string> UpdateUserPhoto(string userId, string userPhoto)
    923         {
    924             ApiBase<string> result = new ApiBase<string>();
    925             var url = WebConfigManager.GetAppSettings("DataCenterUrl") + "/rest/user/updataUserInfo";
    926             result = Json.ToObject<ApiBase<string>>(CallWebRequest.Post(url, "&data=[{userId:"" + userId + "",userPhoto:"" + userPhoto + ""}]"));
    927             return result;
    928         }
    929 
    930         public static Api_DreamClassUserInfo GetDreamClassUser(string userId)
    931         {
    932             var model = new Api_DreamClassUserInfo();
    933             //model = CacheRedis.Cache.Get<Api_DreamClassUserInfo>(RedisKey.DreamCourseUser + userId);
    934             var url = GetConfig("platform.system.dreamclass.url", true) + "rest/getUserInfo";
    935             var result = Json.ToObject<ApiBase<Api_DreamClassUserInfo>>(CallWebRequest.Post(url, "&userId=" + userId));
    936             if (result.state == true && result.data != null)
    937             {
    938                 model = result.data;
    939                 //CacheRedis.Cache.Set(RedisKey.DreamCourseUser+userId,model);
    940             }
    941 
    942             return model;
    943         }
    944 
    945         public static List<Api_BitCourse> GetBitCourseList(string userName)
    946         {
    947             List<Api_BitCourse> list = new List<Api_BitCourse>();
    948             list = CacheRedis.Cache.Get<List<Api_BitCourse>>(RedisKey.BitCourse + userName);
    949             if (list != null && list.Count > 0)
    950                 return list;
    951             try
    952             {
    953                 var url = GetConfig("platform.system.szhjxpt.url", true) + "/Services/DtpServiceWJL.asmx/GetMyCourseByLoginName";
    954                 var result = Json.ToObject<ApiConfig<Api_BitCourse>>(CallWebRequest.Post(url, "&loginName=" + userName));
    955 
    956                 if (result.success)
    957                     list = result.datas;
    958                 CacheRedis.Cache.Set(RedisKey.BitCourse + userName, list, 30);//缓存30分钟失效
    959             }
    960             catch (Exception exception)
    961             {
    962                 list = new List<Api_BitCourse>();
    963                 Log.Error(exception.Message);
    964             }
    965 
    966             return list;
    967         }
    968     }
    View Code

    一个简单的例子  

    1  string __url = "http://localhost:4090/API/Referal/Visit"; 
    2 string param = "{ "Year": 2019,"Month": 4,"Operator":"sys_overseas"}";
    3 WebRequestHelper.OnPOST<JsonData<RRData>>(__url, param);
    View Code
     1     class WebRequestHelper
     2     {
     3         /// <summary>
     4         /// 
     5         /// </summary>
     6         /// <param name="url"></param>
     7         /// <param name="param"></param>
     8         /// <returns></returns>
     9         public static string OnPOST(string url, string param = null)
    10         {
    11             var req = WebRequest.Create(url) as HttpWebRequest;
    12             req.Method = "POST";
    13             req.ContentType = "application/json";
    14             
    15             using (StreamWriter reWriter = new StreamWriter(req.GetRequestStream()))
    16             {
    17                 reWriter.Write(param);
    18                 reWriter.Close();
    19             }
    20             var res = req.GetResponse();
    21 
    22             using (var reader = new StreamReader(res.GetResponseStream()))
    23             {
    24                 string _json = reader.ReadToEnd();
    25 
    26                 return _json;
    27             }
    28 
    29         }
    30 
    31         public static T OnPOST<T>(string url, string param = null) where T : new()
    32         {
    33             //var req = WebRequest.Create(url) as HttpWebRequest;
    34             //using (var reqWrite=new StreamWriter(req.GetRequestStream()))
    35             //{
    36             //    reqWrite.Write(param);
    37             //    reqWrite.Close();
    38             //}
    39 
    40             //var res = req.GetResponse();
    41             //using (var reader=new StreamReader(res.GetResponseStream()))
    42             //{
    43             //    string _json= reader.ReadToEnd();
    44             string _json = OnPOST(url, param);
    45            return   JsonConvert.DeserializeObject<T>(_json);
    46             //}
    47         }
    48 
    49 
    50     }
    View Code
  • 相关阅读:
    AngularJS Insert Update Delete Using PHP MySQL
    Simple task manager application using AngularJS PHP MySQL
    AngularJS MySQL and Bootstrap Shopping List Tutorial
    Starting out with Node.js and AngularJS
    AngularJS CRUD Example with PHP, MySQL and Material Design
    How to install KVM on Fedora 22
    Fake_AP模式下的Easy-Creds浅析
    河南公务员写古文辞职信
    AI
    政协委员:最大愿望是让小学生步行上学
  • 原文地址:https://www.cnblogs.com/DataBase-123/p/11011499.html
Copyright © 2011-2022 走看看