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

In classic ASP applications we had the flexibility of having multiple formtags on the same page and each form could have differenttarget 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 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 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 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值