2010-06-08 32 views
3

我在我的网站上有一个窗体。用户输入他们的电子邮件并从下拉菜单中选择一个位置。然后,我需要通过点击查询字符串中的用户位置和电子邮件地址将这些数据发布到外部网站。从代码隐藏中打开外部网址

我这样做,像这样:

string url = "http://www.site.com/page.aspx?location=" + location.Text + "&email=" + email.Text; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

我的客户说,我不打他们的服务器,而是通过调试去的时候,我发现了他们的服务器的响应。我也尝试跟踪使用Firebug发生的事情,并且我注意到没有对该外部站点发布POST。

我在这里做错了什么?

+0

它在客户端如何触发?我猜你不能通过Firebug调试特定的POST,因为你使用的是服务器代码。 – Humberto 2010-06-08 19:38:18

+0

如果该代码正在生成响应,那么它*必须*在某处打到某个服务器。您是否已验证您的服务器将www.site.com解析为与本地Web浏览器相同的IP?服务器是否仍然可以配置为使用测试站点? – ThatBlairGuy 2010-06-08 19:48:22

回答

3

确保您正在执行POST而不是GET方法。这是我以前用过的一些类似的代码。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);   
       request.KeepAlive = false; 
       request.ProtocolVersion = HttpVersion.Version10; 
       request.Method = "POST"; 
       request.Timeout = 30000; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
+0

这很好,谢谢。 – Steven 2010-06-08 21:27:35

2

检查什么Method您正在使用的WebRequest。我假设它默认为GET,而不是POST

您可以自己轻松地进行设置:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "POST"; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
1

从我在这里看到的代码,我不得不说,你的客户是错误的,你打他们的服务器(假设site.com是他们的服务器和你有一个工作的互联网连接:)。但是,如果你需要做一个POST而非GET来发送数据,或许类似如下:

string url = "http://www.site.com/page.aspx"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 

// set request properties 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 

// set post values 
string postValues = "location=" + location.Text + "&email=" + email.Text; 
request.ContentLength = postValues.Length; 

// write post values 
StreamWriter streamWriter = new StreamWriter (request.GetRequestStream(), System.Text.Encoding.ASCII); 
streamWriter.Write(postValues); 
streamWriter.Close(); 

// process response 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader streamReader = new StreamReader(response.GetResponseStream()); 
string responseData = streamReader.ReadToEnd(); 
streamReader.Close(); 

// do any processing needed on responseData... 
5
string line; 
    HttpWebRequest request = WebRequest.Create("http://www.yahoo.com") as HttpWebRequest; 
    HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
    StreamReader streamr = new StreamReader(response.GetResponseStream()); 
    line = streamr.ReadToEnd(); 

ü可以得到马后我已经写在德

+0

你可以添加一些解释为什么这个效果更好? – hol 2012-08-09 05:53:40