Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 网页在不同的请求下返回不同的状态代码_Http_Erlang_Wget_Http Status Code 503_Httpc - Fatal编程技术网

Http 网页在不同的请求下返回不同的状态代码

Http 网页在不同的请求下返回不同的状态代码,http,erlang,wget,http-status-code-503,httpc,Http,Erlang,Wget,Http Status Code 503,Httpc,这是我项目代码的一部分 URL="http://www.amazon.com", HTTPOpts = [{autoredirect, false}], case httpc:request(get, {URL, [{"User-Agent", "Mozilla"}]}, HTTPOpts, []) of {ok, {{_, Code, _}, Headers, Body}} when Code == 200 -> %%code for process code=200 %%

这是我项目代码的一部分

URL="http://www.amazon.com",
HTTPOpts = [{autoredirect, false}],
case httpc:request(get, {URL, [{"User-Agent", "Mozilla"}]}, HTTPOpts, []) of
 {ok, {{_, Code, _}, Headers, Body}}  when Code == 200  ->

  %%code for process code=200 %%

  {ok, {{_, Code, _}, Headers, _}}  when Code < 310 , Code >= 300 ->

    %% redirection

  {ok, {{_, Code, _}, Headers, _}}  when Code ==503 ->

    %%service unavailable
URL=”http://www.amazon.com",
HTTPOpts=[{autoredirect,false}],
案例httpc:request(get,{URL,[{“用户代理”,“Mozilla”}]},HTTPOpts,[])
{ok,{{{{},Code,{},Headers,Body}当Code==200->
%%工艺代码代码=200%%
{ok,{{{{},Code,{},Headers,{}当Code<310,Code>=300->
%%重定向
{ok,{{{{},Code,{},Headers,{}当Code==503->
%%服务不可用
问题是当我执行
http
请求时,它返回不同的状态代码

在上面的
URL
的情况下,我得到了两个响应,
code=200
code=503
,我如何处理这个问题,以便总是得到
code=200

我还使用
wget“www.amazon.com”
进行了尝试,得到了相同的结果

我的想法是:在
code=503
的情况下重新请求,但这个问题可能会进入循环,并且可能永远不会返回
code=200
,或者在多次迭代后返回,这会导致客户端请求延迟


如何解决这个问题?

作为开发人员,我们无法控制我们试图与之交谈的第三方系统的响应。在您提供的示例中,亚马逊似乎故意拒绝您的访问,因为他们怀疑您是机器人或刮刀。只要得到一个503,就可以通过查看响应体来证明这一点

作为一名开发人员,您可以做的是适应连接到某个系统时可能出现的每种情况

对于HTTP,当遇到5xx错误代码时,通常需要重试请求。为了防止自己陷入循环,实现指数退避,并限制代码重试的次数

HTTP4xx错误代码通常表示您的请求有问题。您不想在这里重试,只需看看您的请求可能有什么问题


对于您的特殊情况,因为亚马逊认为您是一个自动访问者,所以请尝试模仿普通的web浏览器。从
用户代理
头、cookies等开始。

作为开发人员,我们无法控制我们试图与之交谈的第三方系统的响应。在您提供的示例中,亚马逊似乎故意拒绝您的访问,因为他们怀疑您是机器人或刮刀。只要得到一个503,就可以通过查看响应体来证明这一点

作为一名开发人员,您可以做的是适应连接到某个系统时可能出现的每种情况

对于HTTP,当遇到5xx错误代码时,通常需要重试请求。为了防止自己陷入循环,实现指数退避,并限制代码重试的次数

HTTP4xx错误代码通常表示您的请求有问题。您不想在这里重试,只需看看您的请求可能有什么问题

对于您的特殊情况,因为亚马逊认为您是一个自动访问者,所以请尝试模仿普通的web浏览器。从
用户代理
标题、cookie等开始