你的位置:首页 > ASP.net教程

[ASP.net教程]接口 Post


 public static StringBuilder HttpPost(string Url, byte[] Postdata, string i)    {      StringBuilder content = new StringBuilder();      try      {        WebClient wc = new WebClient();        wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");        byte[] bycontent = wc.UploadData(Url, "POST", Postdata);        string strcontent = System.Text.Encoding.UTF8.GetString(bycontent);        //strcontent=strcontent.Replace(""", "“");        content.Append(strcontent);      }      catch (Exception ex)      {        throw new ServiceCustomException("HTTP请求失败!", ex);      }      return content;    }

第一种方式

使用:StringBuilder str = NetUtil.HttpPost(posturl, byte1, "1");

// StringBuilder sbd = NetUtil.Request(geturl, HttpMethod.GET);//此方式为Get实例

 /// <summary>    /// 发出Http请求,并返回服务器的响应    /// </summary>    /// <param name="url">请求的网址</param>    /// <param name="dataToPost">post的数据</param>    /// <returns>服务器的响应</returns>    public static StringBuilder Request(string url, HttpMethod method, WebHeaderCollection headers = null, string accept = null,      string contentType = null, Encoding encoding = null, bool keepAlive = false,      int timeout = 1000 * 600, int readWriteTimeout = 1000 * 600, int writeCount = 256,      CookieContainer cookieContainer = null, byte[] dataToPost = null)    {      StringBuilder result = new StringBuilder();      HttpWebRequest request = null;      HttpWebResponse response = null;      Stream responseStream = null;      StreamReader reader = null;      try      {        request = (HttpWebRequest)WebRequest.Create(url);        request.Method = method.ToString();        if (headers != null)          request.Headers = headers;        if (!string.IsNullOrEmpty(accept))          request.Accept = accept;        if (!string.IsNullOrEmpty(contentType))          request.ContentType = contentType;        request.KeepAlive = keepAlive;        if (dataToPost != null && !dataToPost.Length.Equals(0))        {          request.ContentLength = dataToPost.Length;        }        request.Timeout = timeout;        request.ReadWriteTimeout = readWriteTimeout;        if (encoding == null)          encoding = Encoding.GetEncoding("utf-8");        if (method.Equals(HttpMethod.POST) && dataToPost != null && !dataToPost.Length.Equals(0))        {          using (Stream requestStream = request.GetRequestStream())          {            int index = 0;            while (index < dataToPost.Length)            {              if (dataToPost.Length - index <= writeCount)              {                requestStream.Write(dataToPost, index, dataToPost.Length - index);                index += dataToPost.Length - index;                break;              }              else              {                requestStream.Write(dataToPost, index, writeCount);                index += writeCount;              }            }          }        }        if (cookieContainer == null)          request.CookieContainer = new CookieContainer();        else          request.CookieContainer = cookieContainer;        response = (HttpWebResponse)request.GetResponse();        responseStream = response.GetResponseStream();        reader = new StreamReader(responseStream, encoding);        string line = string.Empty;        while ((line = reader.ReadLine()) != null)        {          result.Append(line);        }        reader.Close();      }      catch (WebException ex)      {        throw ex;      }      catch (Exception ex)      {      }      finally      {        if (responseStream != null)        {          responseStream.Close();          responseStream = null;        }        if (reader != null)        {          reader.Close();          reader = null;        }        if (response != null)        {          response.Close();          response = null;        }      }      return result;    }

第二种方式

使用: StringBuilder str = NetUtil.Request(posturl, HttpMethod.POST, null, null, "application/x-www-form-urlencoded", System.Text.Encoding.UTF8,
                        dataToPost: byte1);

 /// <summary>    /// 提交数据请求 方法一    /// </summary>    /// <param name="POSTURL">请求提交的地址 如:http://xxx.xxx.xxx/interface/TestPostRequest</param>    /// <param name="PostData">提交的数据(字符串)</param>    /// <returns></returns>    public static string RequestData(string POSTURL, string PostData)    {      //发送请求的数据      WebRequest myHttpWebRequest = WebRequest.Create(POSTURL);      myHttpWebRequest.Method = "POST";      UTF8Encoding encoding = new UTF8Encoding();      byte[] byte1 = encoding.GetBytes(PostData);      myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";      //myHttpWebRequest.ContentType = "application/json";      myHttpWebRequest.ContentLength = byte1.Length;      Stream newStream = myHttpWebRequest.GetRequestStream();      newStream.Write(byte1, 0, byte1.Length);      newStream.Close();      //发送成功后接收返回的      HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse();      string lcHtml = string.Empty;      Encoding enc = Encoding.GetEncoding("UTF-8");      Stream stream = response.GetResponseStream();      StreamReader streamReader = new StreamReader(stream, enc);      lcHtml = streamReader.ReadToEnd();      return lcHtml;    }

第三种方式

使用:NetUtil.RequestData(posturl, json);

public static string BuildQuery(IDictionary<string, string> parameters)    {      StringBuilder postData = new StringBuilder();      bool hasParam = false;      IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();      while (dem.MoveNext())      {        string name = dem.Current.Key;        string value = dem.Current.Value;        // 忽略参数名或参数值为空的参数        if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(value))        {          if (hasParam)          {            postData.Append("&");          }          postData.Append(name);          postData.Append("=");          //postData.Append(UrlEncode(value));          postData.Append(value);          hasParam = true;        }      }      return postData.ToString();    }

对数据进行格式化

使用: 

Dictionary<string, string> dic = new Dictionary<string, string>();
                    dic.Add("canshu", "dddddddd);

string str1 = NetUtil.BuildQuery(dic); //dic为要post的所有参数

byte[] byte1 = System.Text.Encoding.UTF8.GetBytes(str1);

//posturl为传递的url参数

第三种方式中json为:string json = "canshu=" + "dddddddd";