.net 模拟GET或者POST请求
#region 通讯函数
/*
*
* /
*
* / 通讯函数
*
* /
*
* / 请求Url *
* / 请求参数 *
* / 请求方式GET/POST *
* /
*
*/
public static string SendRequest( string url, string para, string method )
{
string strResult = “”;
if ( url == null || url == “” )
return(null);
if ( method == null || method == “” )
method = “GET”;
/* GET方式 */
if ( method.ToUpper() == “GET” )
{
try
{
System.Net.WebRequest wrq = System.Net.WebRequest.Create( url + para );
wrq.Method = “GET”;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
System.Net.WebResponsewrp = wrq.GetResponse();
System.IO.StreamReadersr = new System.IO.StreamReader( wrp.GetResponseStream(), System.Text.Encoding.GetEncoding( “gb2312” ) );
strResult = sr.ReadToEnd();
}
catch ( Exception ex )
{
return(ex.Message);
}
}
/* POST方式 */
if ( method.ToUpper() == “POST” )
{
if ( para.Length > 0 && para.IndexOf( ‘?’ ) == 0 )
{
para = para.Substring( 1 );
}
WebRequest req = WebRequest.Create( url );
req.Method = “POST”;
req.ContentType = “application/x-www-form-urlencoded”;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
StringBuilderUrlEncoded = new StringBuilder();
Char[] reserved = { ‘?’, ‘=’, ‘&’ };
byte[] SomeBytes = null;
if ( para != null )
{
int i = 0, j;
while ( i < para.Length ) { j = para.IndexOfAny( reserved, i ); if ( j == -1 ) { UrlEncoded.Append( HttpUtility.UrlEncode( para.Substring( i, para.Length - i ), System.Text.Encoding.GetEncoding( "gb2312" ) ) ); break; } UrlEncoded.Append( HttpUtility.UrlEncode( para.Substring( i, j - i ), System.Text.Encoding.GetEncoding( "gb2312" ) ) ); UrlEncoded.Append( para.Substring( j, 1 ) ); i = j + 1; } SomeBytes = Encoding.Default.GetBytes( UrlEncoded.ToString() ); req.ContentLength = SomeBytes.Length; Stream newStream = req.GetRequestStream(); newStream.Write( SomeBytes, 0, SomeBytes.Length ); newStream.Close(); }else { req.ContentLength = 0; } try { WebResponseresult = req.GetResponse(); StreamReceiveStream = result.GetResponseStream(); Byte[] read = new Byte[512]; intbytes = ReceiveStream.Read( read, 0, 512 ); while ( bytes > 0 )
{
/*
*
* 注意:
*
* 下面假定响应使用 UTF-8 作为编码方式。
*
* 如果内容以 ANSI 代码页形式(例如,932)发送,则使用类似下面的语句:
*
* Encoding encode = System.Text.Encoding.GetEncoding(“shift-jis”);
*
*/
Encoding encode = System.Text.Encoding.GetEncoding( “gb2312” );
strResult += encode.GetString( read, 0, bytes );
bytes = ReceiveStream.Read( read, 0, 512 );
}
return(strResult);
}
catch ( Exception ex )
{
return(ex.Message);
}
}
return(strResult);
}
#endregion
#region 简化通讯函数
/*
*
* /
*
* / GET方式通讯
*
* /
*
* / *
* / *
* /
*
*/
public static string SendRequest( string url, string para )
{
return(SendRequest( url, para, “GET” ) );
}
#endregion