在.NET 中模拟提交Post数据

    技术2022-05-11  168

     

    using System; using System.Net; using System.IO; using System.Text; using System.Web; class ClientPOST { public static void Main(string[] args) { if (args.Length < 1) { showusage(); } else { if (args.Length < 2 ) { getPage(args[0], "s1=foods2=bart(&S)"); } else { getPage(args[0], args[1]); } } Console.WriteLine(); Console.WriteLine("按任意键继续..."); Console.ReadLine(); return; } public static void showusage() { Console.WriteLine("尝试发送 (POST) 到 URL 中"); Console.WriteLine(); Console.WriteLine("用法::"); Console.WriteLine("ClientPOST URL [postdata]"); Console.WriteLine(); Console.WriteLine("示例::"); Console.WriteLine("ClientPOST http://www.microsoft.com s1=food&s2=bart"); } public static void getPage(String url, String payload) { WebResponse result = null; try { WebRequest req = WebRequest.Create(url); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; StringBuilder UrlEncoded = new StringBuilder(); Char[] reserved = {'?', '=', '&'}; byte[] SomeBytes = null; if (payload != null) { int i=0, j; while(i<payload.Length){ j=payload.IndexOfAny(reserved, i); if (j==-1){ UrlEncoded.Append(HttpUtility.UrlEncode(payload.Substring(i, payload.Length-i))); break; } UrlEncoded.Append(HttpUtility.UrlEncode(payload.Substring(i, j-i))); UrlEncoded.Append(payload.Substring(j,1)); i = j+1; } SomeBytes = Encoding.UTF8.GetBytes(UrlEncoded.ToString()); req.ContentLength = SomeBytes.Length; Stream newStream = req.GetRequestStream(); newStream.Write(SomeBytes, 0, SomeBytes.Length); newStream.Close(); } else { req.ContentLength = 0; } result = req.GetResponse(); Stream ReceiveStream = result.GetResponseStream(); Encoding encode = System.Text.Encoding.GetEncoding("utf-8"); StreamReader sr = new StreamReader( ReceiveStream, encode ); Console.WriteLine("/r/n已接收到响应流"); Char[] read = new Char[256]; int count = sr.Read( read, 0, 256 ); Console.WriteLine("HTML.../r/n"); while (count > 0) { String str = new String(read, 0, count); Console.Write(str); count = sr.Read(read, 0, 256); } Console.WriteLine(""); } catch(Exception e) { Console.WriteLine( e.ToString()); Console.WriteLine("/r/n找不到请求 URI,或者它的格式不正确"); } finally { if ( result != null ) { result.Close(); } } } }

    最新回复(0)