Home
Products
Forums
Help
Publish Article

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

In classic ASP applications we had the flexibility of having multiple form tags on the same page and each form could have different target URLs and different method 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 handy HttpWebRequest class that can be used to send HTTP 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 using Paypal to accept payments for your e-commerce application. It requires that you set up your shopping cart button to submit a POST request with all the required information. Following is an example from Paypal'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 second form tag inside the main form.

How will I do it?

We will gather all the required information from the user on a regular ASPX page. And then when user clicks button to submitt information for shopping cart, then we will use HttpWebRequest object to submit the request to target web server. The following illustrates how values from two text box controls are sent to a target web server. This example does not correspond to the fields described in the Paypal example.

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 is is posted here Post Request To Another Web Site With Redirection. See also How to use HttpWebRequest to simulate Hotmail Login?

Netomatix team appreciates everybody's continued support and contribution to site. Join The Effort

Comments

RE:how to develop a aspx page to submit the values to paypal
anandtpatel   12/17/2009 1:27:10 PM

www.paypaldev.com

 
how to develop a aspx page to submit the values to paypal
venkatk   6/16/2009 10:24:51 PM

i have an ASPX page and values that i need to send to paypal.

I can put these values in html hidden fields.  how can i submit this aspx page to paypal

 

Home     About us     Contact us    Copyright    Privacy Policy    Return Policy    Advertisers
Copyright © Netomatix