Home
Products
Forums
Help
Publish Article
Go Freelance

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

hi
chotkos   4/19/2013 11:20:03 PM

what about type = radio ? i do not know how to add it :/

 
post image?
jackoneal   12/31/2011 1:58:16 AM

hi,

thanks for the great code example!
how could the httpwebrequest to be used to post an  image as well in the same post??

 
RE:how to develop a aspx page to submit the values to paypal
sanket   11/27/2011 9:04:04 PM

Hi,

I just came across the article http://www.netomatix.com/development/postrequestform.aspx and I would like to thank you for posting such an amazing article.

I had spent hours trying to figure out sending data from my custom page to cybersource hosted order page and finally I found this article which showed me how to do it.

Thanks a lot for posting this article.

 
#The uri contains char "["
pankajgoyal   10/19/2010 6:12:52 AM

I am the following code from FPRPC for sharepoint System.Collections.Specialized.NameValueCollection methodData = new System.Collections.Specialized.NameValueCollection(); if (!string.IsNullOrEmpty(version)) version = "V" + version; methodData.Add("method", "get document:" + GetServerExtensionsVersion(webUrl.SiteUrl)); methodData.Add("service_name", ""); methodData.Add("document_name", webUrl.FileUrl); methodData.Add("get_option", getOption); methodData.Add("timeout", "10"); methodData.Add("doc_version", version); HttpWebRequest req = StartWebRequest(GetAuthorURL(webUrl.SiteUrl), methodData); System.IO.Stream reqStream = req.GetRequestStream(); reqStream.Flush(); reqStream.Close(); HttpWebResponse response = (HttpWebResponse)req.GetResponse(); here the webUrl.fileUrl is the url of file on the server. But when the fileurl contains the char '[' I am getting some error message in response. It seems that post it considering this '[' char as some internal message starting. Can someone please tell me how can I escape this char.

 
HOW COULD I CONNECT TO COSTCO USING httpWebRequest
vankadari.raghu   6/24/2010 12:11:28 AM

Hi,

I am using the Costco services for payment and for it i have to submit the credentials Merchant id ,user name,Pin no and few values to initiate the payment how can i attain it  using HttpWebRequest

here goes my code

protected void btnContinue_Click(object sender, EventArgs e)
    {
        //string strId = UserId_TextBox.Text;
        //string strName = Name_TextBox.Text;

        ASCIIEncoding encoding = new ASCIIEncoding();
        string postData = "ssl_merchant_id=" + System.Configuration.ConfigurationSettings.AppSettings.Get("userid");
        postData += ("&ssl_user_id=" + System.Configuration.ConfigurationSettings.AppSettings.Get("username"));
        postData += ("&ssl_pin=" + System.Configuration.ConfigurationSettings.AppSettings.Get("pinno"));
        postData += ("&ssl_show_form=" + "true");
        postData += ("&ssl_test_mode=" + "true");
        postData += ("&ssl_invoice_number" + "123-achbiz-001");
        postData += ("&ssl_transaction_type" + "ccsale");
        postData += ("&ssl_amount=" + "5.95");
        postData += ("&ssl_salestax" + "0.00");
        byte[] data = encoding.GetBytes(postData);

        // Prepare web request...
        HttpWebRequest myRequest =(HttpWebRequest)WebRequest.Create("https://www.myvirtualmerchant.com/VirtualMerchant/process.do");
     
        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();

    }

 
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

 

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