zoukankan      html  css  js  c++  java
  • WebRequest之Post写法

    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 一次性提交POst
    public 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)
    {

    }


    }
    }

    ashx

    using 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();
    //加载XML
    xd.LoadXml(re);


    context.Response.ContentType = "text/plain";

    context.Response.Write(testGet);
    }

    public bool IsReusable
    {
    get
    {
    return false;
    }
    }
    }
    }
    作者:KKcat
        
    个人博客:http://jinzhao.me/
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Python中的类(上)
    Django REST Framework API Guide 07
    Django REST Framework API Guide 06
    Django REST Framework API Guide 05
    Django REST Framework API Guide 04
    Django REST Framework API Guide 03
    Django REST Framework API Guide 02
    Django REST Framework API Guide 01
    Django 详解 信号Signal
    Django 详解 中间件Middleware
  • 原文地址:https://www.cnblogs.com/jinzhao/p/1654760.html
Copyright © 2011-2022 走看看