这让我有点抓狂。我正在尝试做一些非常简单的事情,我以前已经做过很多次了。只是尝试调用REST API。
我试图用endpoint = "http://feed.linksynergy.com/productsearch?token=717f8c8511725ea26fd5c3651f32ab187d8db9f4b208be781c292585400e682d&keyword=DVD"“调用GetMessage,但它总是返回空字符串。如果我传递给它任何其他有效的网址,它将会工作。但如果我只是将原始网址复制并粘贴到web浏览器中,它返回正常!
有没有聪明的开发人员能告诉我是怎么回事?
下面的代码。提前谢谢。
詹姆斯
公共string请求(String GetMessage){ HttpWebRequest endPoint= CreateWebRequest( endPoint);
using (var response = (HttpWebResponse)request.GetResponse())
{
var responseValue = string.Empty;
if (response.StatusCode != HttpStatusCode.OK)
{
string message = String.Format("POST failed. Received HTTP {0}", response.StatusCode);
throw new ApplicationException(message);
}
// grab the response
using (var responseStream = response.GetResponseStream())
{
using (var reader = new StreamReader(responseStream))
{
responseValue = reader.ReadToEnd();
}
}
return responseValue;
}
}私有请求(String HttpWebRequest ){ var CreateWebRequest= (HttpWebRequest)WebRequest.Create( endPoint);
request.Method = "GET";
request.ContentLength = 0;
request.ContentType = "text/xml";
return request;
}发布于 2010-11-13 10:43:09
不知道为什么设置ContentLength/ContentType -这通常是针对HTTP POST的,其中有一个请求体,您可以通过流向其写入数据。
这是一个HTTP GET,所以没有请求体。(仅限URI和查询字符串)
这应该是可行的:
using System;
using System.IO;
using System.Net;
using System.Text;
// Create the web request
HttpWebRequest request = WebRequest.Create("http://www.someapi.com/") as HttpWebRequest;
// Get response
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
// Get the response stream
StreamReader reader = new StreamReader(response.GetResponseStream());
// Console application output
Console.WriteLine(reader.ReadToEnd());
}编辑
@Gabe也是非常正确的-在另一台没有任何防火墙/代理服务器的计算机上尝试一下。
我的工作PC位于代理服务器之后,所以为了进行基于REST的HTTP调用,我需要这样做:
var proxyObject = new System.Net.WebProxy("http://myDomain:8080/", true);
System.Net.WebRequest req = System.Net.WebRequest.Create("http://www.someapi.com/");
req.Proxy = proxyObject;
proxyObject.Credentials = New System.Net.NetworkCredential("domain\username","password")https://stackoverflow.com/questions/4170612
复制相似问题