我的任务是建立一个服务,将第三方API中的信息提取到我们的内部数据仓库中。他们有一个get请求来提取我想要的数据,你可以通过查询字符串指定你想要的参数。 E.g。
http://www.api.com?parameter=firstname¶meter=surname
在我的代码中,URL的长度超过3600个字符,因为需要116个参数。
我的网页请求是使用以下代码生成的:
private HttpWebRequest GetWebRequest(string url, string type, int timeout)
{
var httpWebRequest = (HttpWebRequest) WebRequest.Create(_baseUrl + url);
httpWebRequest.Method = type;
httpWebRequest.Timeout = timeout;
httpWebRequest.ContentType = "application/json";
httpWebRequest.Headers.Add("Authorization", "Bearer " + _token.access_token);
httpWebRequest.ContentLength = 0;
return httpWebRequest;
}
当我运行代码时,我收到一个Web异常消息"无法连接到远程服务器"内部异常消息"无法建立连接,因为目标计算机主动拒绝了它的IP地址"
我没有在这篇文章中包含整个网址,因为我发现如果我将网址复制并粘贴到Postman并运行请求我得到了我期望的响应,所以我知道网址格式正确。我还发现,如果我将网址的长度减少到大约2100个字符,那么请求就可以了。
我一直在搜索但是没有找到任何明确的文档来暗示URL的长度有限制,但是我无法解释为什么整个url在Postman中工作但在ac#web请求中没有,如果我剪切了URL的长度,然后在Web请求中工作!
如果有人对此有任何想法,我会很高兴。
答案 0 :(得分:0)
old post建议根据服务器和客户端的最大请求长度介于2到4 KB之间,这与您的观察结果一致。
Postman是'另一个'客户端,所以它很可能在那里工作,而它不在您的程序中。底线是:你不应该GET
这么长的请求。你应该POST
代替他们。如果您可以控制该服务,则可以对其进行更改,以便它也支持POST
,如果不是(已记录或未记录)。