下面是我在项目中用到的网络链接代码。和大家分享。
private String RequestAndResponse()
{
//阻塞用户界面
Cursor.Current = Cursors.WaitCursor;
try
{
//获得URL请求
HttpWebRequest hreq = null;
hreq = (HttpWebRequest)WebRequest.Create(url);
//设置超时
hreq.Timeout =20000;
//设置缓存
hreq.AllowWriteStreamBuffering = false;
//发送方式
hreq.Method = "POST";
hreq.ContentType = "application/x-www-form-urlencoded";
//发送数据
//UTF-8编码
UTF8Encoding utf8 = new UTF8Encoding();
//对发送内容进行UTF-8编码
byte[] data = utf8.GetBytes(content);
hreq.ContentLength = data.Length;
//从web链接获得输入流
Stream newStream = hreq.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
//得到页面相应内容
returnString = GetResponseContent(hreq);
}
catch (WebException webex)
{
returnString = "-1";
throw webex;
}
catch (Exception ex)
{
returnString = "-1";
throw ex;
}
//
Cursor.Current = Cursors.Default;
return returnString;
}
///--------------------------------------------------
/// <summary>
/// 返回页面相应内容
/// </summary>
/// <param name="hreq">
/// http链接
/// </param>
/// <returns>
/// 页面相应内容, -1 页面无相应, 0 为无数据下载,其他为页面内容
/// </returns>
/// ---------------------------------------------------
private string GetResponseContent(HttpWebRequest hreq)
{
string returnStr = "";
//获得返回内容
try
{
HttpWebResponse response = (HttpWebResponse)hreq.GetResponse();
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receive = response.GetResponseStream();
StreamReader resr = new StreamReader(receive, encode);
Char[] read = new Char[1024];
int count = resr.Read(read, 0, 1024);
while (count > 0)
{
String str = new String(read, 0, count);
returnStr += str;
count = resr.Read(read, 0, 1024);
}
}
else
{
return returnStr;
}
response.Close();
}
catch (WebException webex)
{
returnStr = "-1";
throw webex;
}
return returnStr;
}