Erlang:ibrowse-获取重定向URL

Erlang:ibrowse-获取重定向URL,erlang,Erlang,我正在为Erlang使用ibrowse API。问题是,当我试图阅读重定向到另一个网页的网页时,它会变成空白。关于如何追踪到最后一页有什么想法吗 以下是我目前的情况: get_web(Src) -> ibrowse:start(), {_,_,_,Body} = ibrowse:send_req(Src, [], get), Body. 谢谢如果有人偶然发现了这一点,以下是我所做的: get_web({_,error}) -> error; get

我正在为Erlang使用ibrowse API。问题是,当我试图阅读重定向到另一个网页的网页时,它会变成空白。关于如何追踪到最后一页有什么想法吗

以下是我目前的情况:

get_web(Src) ->
    ibrowse:start(),
    {_,_,_,Body} = ibrowse:send_req(Src, [], get),
    Body.

谢谢

如果有人偶然发现了这一点,以下是我所做的:

get_web({_,error}) ->
    error;

get_web({url,Src}) ->
    ibrowse:start(),
    {_,_,Head,Body} = ibrowse:send_req(Src, [], get),
    if
        length(Body) == 0 ->
            get_web(get_location(Head));
        true ->
            Body
    end.

get_location([]) ->
    {url,error};
get_location([{"Location",URL}|_]) ->
    {url,URL};
get_location([_|T]) ->
    get_location(T).

如果有人偶然发现了这一点,以下是我所做的:

get_web({_,error}) ->
    error;

get_web({url,Src}) ->
    ibrowse:start(),
    {_,_,Head,Body} = ibrowse:send_req(Src, [], get),
    if
        length(Body) == 0 ->
            get_web(get_location(Head));
        true ->
            Body
    end.

get_location([]) ->
    {url,error};
get_location([{"Location",URL}|_]) ->
    {url,URL};
get_location([_|T]) ->
    get_location(T).

如果响应中有301或302状态代码,则应遵循
位置
标题

get_web({url,Src}) ->
  ibrowse:start(),
  {ok, Status, Head, Body} = ibrowse:send_req(Src, [], get),
  if
    Status =:= 200 ->
      Body;
    Status =:= 301 orelse Status =:= 302 ->
      get_web(get_location(Head))
  end.

get_location(Head) ->
  case lists:keyfind("Location", 1, Head) of
    false -> {url, error};
    URL -> {url, URL}
  end.

如果响应中有301或302状态代码,则应遵循
位置
标题

get_web({url,Src}) ->
  ibrowse:start(),
  {ok, Status, Head, Body} = ibrowse:send_req(Src, [], get),
  if
    Status =:= 200 ->
      Body;
    Status =:= 301 orelse Status =:= 302 ->
      get_web(get_location(Head))
  end.

get_location(Head) ->
  case lists:keyfind("Location", 1, Head) of
    false -> {url, error};
    URL -> {url, URL}
  end.

我不认为这是正确的,因为一些网站在新页面上提供了一个带有href的虚拟html片段,用于重定向。最好检查statuscode是否为
302
,然后使用
位置
标题。这就是状态码的作用;)我不认为这是正确的,因为一些网站在新页面上提供了一个带有href的虚拟html片段,用于重定向。最好检查statuscode是否为
302
,然后使用
位置
标题。这就是状态码的作用;)