Shi*_*mar 19
这是一种方法.
您以NameValueCollection的形式发送此方法url和name/value参数.该方法在端点上生成Http Post并将响应作为字符串返回.
当然,取决于你正在做什么/为什么这样做以及这个方法被调用多少次,可能还有其他选择.但是在您提供有关您的特定需求的更多信息之前,这种方法已经足够了.
下面的方法使用任务(.NET 4.0)和异步方法,因此如果您在循环中进行多次调用,它将比下一个代码列表更快.
static string GetWebResponse(string url, NameValueCollection parameters)
{
  var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
  httpWebRequest.ContentType = "application/x-www-form-urlencoded";
  httpWebRequest.Method = "POST";
  var sb = new StringBuilder();
  foreach (var key in parameters.AllKeys)
    sb.Append(key + "=" + parameters[key] + "&");
  sb.Length = sb.Length - 1;
  byte[] requestBytes = Encoding.UTF8.GetBytes(sb.ToString());
  httpWebRequest.ContentLength = requestBytes.Length;
  using (var requestStream = httpWebRequest.GetRequestStream())
  {
    requestStream.Write(requestBytes, 0, requestBytes.Length);
    requestStream.Close();
  }
  Task<WebResponse> responseTask = Task.Factory.FromAsync<WebResponse>(httpWebRequest.BeginGetResponse, httpWebRequest.EndGetResponse, null);
  using (var responseStream = responseTask.Result.GetResponseStream())
  {
    var reader = new StreamReader(responseStream);
    return reader.ReadToEnd();
  }
}
你也可以使用WebClient(它有点简单).此方法将post参数作为表单中的字符串
name1=value1&name2=value2&name3=value3
因此,如果您使用此方法,请确保传递您的参数或修改实现,就像上面的代码.
static string HttpPost(string url, string Parameters) 
{
   var req = System.Net.WebRequest.Create(url);       
   req.ContentType = "application/x-www-form-urlencoded";
   req.Method = "POST";
   byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);
   req.ContentLength = bytes.Length;
   System.IO.Stream os = req.GetRequestStream ();
   os.Write (bytes, 0, bytes.Length);
   os.Close ();
   System.Net.WebResponse resp = req.GetResponse();
   if (resp== null)
     return null;
   var sr = new StreamReader(resp.GetResponseStream());
   return sr.ReadToEnd().Trim();
}
| 归档时间: | 
 | 
| 查看次数: | 33162 次 | 
| 最近记录: |