.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