How to use HttpWebRequest to send POST request to another web server?

来源:互联网 发布:淘宝 清关 身份证 编辑:程序博客网 时间:2024/05/21 15:34

In classic ASP applications we had the flexibility of having multiple formtags on the same page and each form could have differenttarget URLs and differentmethod types. This has been kind of a limiting factor in ASP.Net applications. But this does not mean that it can not be accomplished. Micorosoft .Net framework has a very rich library and provides answers to most of the questions. It has a very handyHttpWebRequest class that can be used to sendHTTP requests to any server.

Where do I need to use it?

Its is important to know where this feature is required. A very good example is if you are usingPaypalto accept payments for your e-commerce application. It requires that you set up your shopping cartbutton to submit aPOST request with all the required information. Following is an example fromPaypal's developer support web site.

<form name="_xclick" target="paypal"action="https://www.paypal.com/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_cart"><input type="hidden" name="business" value="me@mybiz.com"><input type="hidden" name="item_name" value="HTML book"><input type="hidden" name="amount" value="24.99"><input type="image" src="http://www.paypal.com/images/sc-but-01.gif"border="0" name="submit" alt="Make payments with PayPal!"><input type="hidden" name="add" value="1"></form>

You can see that when you click on this button, a form will be submitted to paypal. The problem is that ASP.Net does not allow embedding of secondform tag inside the mainform.

How will I do it?

We will gather all the required information from the user on a regular ASPX page. And then when user clicksbutton to submitt information for shopping cart, then we will useHttpWebRequest object tosubmit the request to target web server. The following illustrates how values from two text box controlsare sent to a target web server. This example does not correspond to the fields described in thePaypalexample.

private void OnPostInfoClick(object sender, System.EventArgs e){string strId = UserId_TextBox.Text;string strName = Name_TextBox.Text;ASCIIEncoding encoding=new ASCIIEncoding();string postData="userid="+strId;postData += ("&username="+strName);byte[]  data = encoding.GetBytes(postData);// Prepare web request...HttpWebRequest myRequest =  (HttpWebRequest)WebRequest.Create("http://localhost/MyIdentity/Default.aspx");myRequest.Method = "POST";myRequest.ContentType="application/x-www-form-urlencoded";myRequest.ContentLength = data.Length;Stream newStream=myRequest.GetRequestStream();// Send the data.newStream.Write(data,0,data.Length);newStream.Close();}

If your server is capable of sending compressed response, read our article How to use Accept-Encoding HTTP Header for more details about it.

Another realted article about posting data to another web server and directing user to that site with it isis posted herePost Request To Another Web Site With Redirection.See alsoHow to use HttpWebRequest to simulate Hotmail Login?


comefrom:http://www.netomatix.com/httppostdata.aspx