http协议的POST传数据

 

PostRequest使用StreamWriter对象写入请求流,不需要使用HttpUtility.UrlEncode显示转码,而下面的需要显示转码,还需要将参数转为字节码

蛋疼…………。

public static string PostRequest(string url, string postData)
{
HttpWebRequest httpWebRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
httpWebRequest.Method = "POST";
httpWebRequest.ServicePoint.Expect100Continue = false;
httpWebRequest.ContentType = "application/x-www-form-urlencoded";

//写入POST参数
StreamWriter requestWriter = new StreamWriter(httpWebRequest.GetRequestStream());
try
{
requestWriter.Write(postData);
}
finally
{
requestWriter.Close();
}

//读取请求后的结果
StreamReader responseReader = null;
string responseData;
try
{
responseReader = new StreamReader(httpWebRequest.GetResponse().GetResponseStream());
responseData = responseReader.ReadToEnd();
}
finally
{
httpWebRequest.GetResponse().GetResponseStream().Close();
responseReader.Close();
}
return responseData;
}
#endregion


public static string HttpPostWebService(string url, string method, string num1)
{
string result = string.Empty;
string param = string.Empty;
byte[] bytes = null;

Stream writer = null;
HttpWebRequest request = null;
HttpWebResponse response = null;

param = HttpUtility.UrlEncode("name") + "=" + HttpUtility.UrlEncode(num1) ;
bytes = Encoding.UTF8.GetBytes(param);

request = (HttpWebRequest)WebRequest.Create(url + "/" + method);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytes.Length;

try
{
writer = request.GetRequestStream(); //获取用于写入请求数据的Stream对象
}
catch (Exception ex)
{
return "";
}

writer.Write(bytes, 0, bytes.Length); //把参数数据写入请求数据流
writer.Close();

try
{
response = (HttpWebResponse)request.GetResponse(); //获得响应
}
catch (WebException ex)
{
return "";
}

//#region 这种方式读取到的是一个返回的结果字符串
//Stream stream = response.GetResponseStream(); //获取响应流
//XmlTextReader Reader = new XmlTextReader(stream);
//Reader.MoveToContent();
//result = Reader.ReadInnerXml();
//#endregion

#region 这种方式读取到的是一个Xml格式的字符串
StreamReader reader;
Stream stream = response.GetResponseStream();
reader = new StreamReader(stream, Encoding.UTF8);
result = reader.ReadToEnd();
#endregion

//response.Dispose();
response.Close();

//reader.Close();
//reader.Dispose();

//Reader.Dispose();
reader.Close();

//stream.Dispose();
stream.Close();

return result;
}

posted @ 2018-11-21 16:32  boenotuch  阅读(269)  评论(0编辑  收藏  举报