龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

在.NET中模拟提交Post数据例子

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
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=b

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();
   }
  }
 }
}

精彩图集

赞助商链接