Web.Config<globalization responseEncoding="gb2312"/>CS文件using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Net;using System.Text;using System.IO;using System.Xml;using System.Collections;using System.Diagnostics;namespace WebPortal{public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){}protected void Button1_Click(object sender, EventArgs e){CoreProxy.Class1 c = new CoreProxy.Class1();c.test1();}protected void Button2_Click(object sender, EventArgs e){webquerst1();}public void webquers2(){string html = null;string url = "http://china.alibaba.com/keyword/promotion.htm?catId=14";WebRequest req = WebRequest.Create(url);req.Method = "POST";WebResponse res = req.GetResponse();Stream receiveStream = res.GetResponseStream();Encoding encode = Encoding.GetEncoding("gb2312");StreamReader sr = new StreamReader(receiveStream, encode);char[] readbuffer = new char[256];int n = sr.Read(readbuffer, 0, 256);while (n > 0){string str = new string(readbuffer, 0, n);html += str;n = sr.Read(readbuffer, 0, 256);}System.Console.Write(html);}//成功!,利用WebRequest 一次Post提交XML内容public void webquerst1(){WebRequest request = WebRequest.Create("http://192.168.1.244/WebPortal/PortalHandler.ashx");// Set the Method property of the request to POST.request.Method = "POST";// Create POST data and convert it to a byte array.System.Xml.XmlDocument xmlpostdata = new System.Xml.XmlDocument();xmlpostdata.Load(Server.MapPath("XML/20097.xml"));string postData = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); //普通字符串内容//string postData = "你好,1232355 abdcde";byte[] byteArray = Encoding.UTF8.GetBytes(postData);// Set the ContentType property of the WebRequest.request.ContentType = "application/x-www-form-urlencoded";// Set the ContentLength property of the WebRequest.request.ContentLength = byteArray.Length;// Get the request stream.Stream dataStream = request.GetRequestStream();// Write the data to the request stream.dataStream.Write(byteArray, 0, byteArray.Length);// Close the Stream object.dataStream.Close();// Get the response.WebResponse response = request.GetResponse();// Display the status.//Console.WriteLine(((HttpWebResponse)response).StatusDescription);// Get the stream containing content returned by the server.dataStream = response.GetResponseStream();// Open the stream using a StreamReader for easy access.StreamReader reader = new StreamReader(dataStream);// Read the content.string responseFromServer = reader.ReadToEnd();// Display the content.//Console.WriteLine(responseFromServer);// Clean up the streams.reader.Close();dataStream.Close();response.Close();}protected void Button3_Click(object sender, EventArgs e){WebClientPost();}//重点!! 成功 利用Webclient Post 按字段的方式提交每个字段的内容给服务器端 public void WebClientPost(){System.Xml.XmlDocument xmlpostdata = new System.Xml.XmlDocument();xmlpostdata.Load(Server.MapPath("XML/OrderClient.xml"));string OrderClient = HttpUtility.HtmlEncode(xmlpostdata.InnerXml);xmlpostdata.Load(Server.MapPath("XML/Order.xml"));string Order = HttpUtility.HtmlEncode(xmlpostdata.InnerXml);xmlpostdata.Load(Server.MapPath("XML/TargetOut.xml"));string TargetOut = HttpUtility.HtmlEncode(xmlpostdata.InnerXml);xmlpostdata.Load(Server.MapPath("XML/ArrayOfOrderDetail.xml"));string ArrayOfOrderDetail = HttpUtility.HtmlEncode(xmlpostdata.InnerXml); System.Net.WebClient WebClientObj = new System.Net.WebClient();System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();//添加值域PostVars.Add("OrderClient", OrderClient);PostVars.Add("Order", Order);PostVars.Add("TargetOut", TargetOut);PostVars.Add("ArrayOfOrderDetail", ArrayOfOrderDetail);try{byte[] byRemoteInfo = WebClientObj.UploadValues("http://192.168.1.244/WebPortal/PlaceOrder.ashx", "POST", PostVars);//下面都没用啦,就上面一句话就可以了string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo);//这是获取返回信息Debug.WriteLine(sRemoteInfo);}catch{ } }//未测试,使用WebClient 一次性提交POstpublic static string SendPostRequest(string url, string postString){byte[] postData = Encoding.UTF8.GetBytes(postString);WebClient client = new WebClient();client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");client.Headers.Add("ContentLength", postData.Length.ToString());byte[] responseData = client.UploadData(url, "POST", postData);return Encoding.Default.GetString(responseData);}/// <summary>/// 这个是用WEbRequest 提交到WEbService 的例子/// </summary>/// <param name="URL"></param>/// <param name="MethodName"></param>/// <param name="Pars"></param>/// <returns></returns>public static XmlDocument QueryPostWebService(String URL, String MethodName, Hashtable Pars){HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded";SetWebRequest(request);byte[] data = EncodePars(Pars);WriteRequestData(request, data);return ReadXmlResponse(request.GetResponse());}private static void SetWebRequest(HttpWebRequest request){request.Credentials = CredentialCache.DefaultCredentials;request.Timeout = 10000;}private static void WriteRequestData(HttpWebRequest request, byte[] data){request.ContentLength = data.Length;Stream writer = request.GetRequestStream();writer.Write(data, 0, data.Length);writer.Close();}private static byte[] EncodePars(Hashtable Pars){return Encoding.UTF8.GetBytes(ParsToString(Pars));}private static String ParsToString(Hashtable Pars){StringBuilder sb = new StringBuilder();foreach (string k in Pars.Keys){if (sb.Length > 0){sb.Append("&");}sb.Append(HttpUtility.UrlEncode(k) + "=" + HttpUtility.UrlEncode(Pars[k].ToString()));}return sb.ToString();}private static XmlDocument ReadXmlResponse(WebResponse response){StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);String retXml = sr.ReadToEnd();sr.Close();XmlDocument doc = new XmlDocument();doc.LoadXml(retXml);return doc;}private static void AddDelaration(XmlDocument doc){XmlDeclaration decl = doc.CreateXmlDeclaration("1.0", "utf-8", null);doc.InsertBefore(decl, doc.DocumentElement);}protected void Button4_Click(object sender, EventArgs e){} }}ashxusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;using System.Diagnostics;using System.IO;using System.Xml;namespace WebPortal{/// <summary>/// $codebehindclassname$ 的摘要说明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]public class PortalHandler : IHttpHandler{public void ProcessRequest(HttpContext context){string testGet = context.Request["testGet"];string testPost = context.Request["testPost"];Debug.WriteLine(testGet);Debug.WriteLine(testPost);//一次性提交的方式//获得内容长度int len = context.Request.ContentLength; //获得所有内容流StreamReader reader = new StreamReader(context.Request.InputStream);//读取内容string responseFromServer = reader.ReadToEnd();//字段提交Post方式string a1 = context.Request["A1"];string a2 = context.Request["A2"];string a3 = context.Request["A3"];//解析Html编码string re = HttpUtility.HtmlDecode(a1);XmlDocument xd = new XmlDocument();//加载XMLxd.LoadXml(re);context.Response.ContentType = "text/plain";context.Response.Write(testGet);}public bool IsReusable{get{return false;}}}}
本文来自博客,转载请标明出处:http://blog.csdn.net/superbirds/archive/2010/12/06/6059576.aspx