0

Erlang の ibrowse API を使用しています。問題は、別の Web ページにリダイレクトする Web ページを読み取ろうとすると、空白になることです。最終ページまでトレースをたどる方法についてのアイデアはありますか?

現時点で私が持っているものは次のとおりです。

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

ありがとう

4

2 に答える 2

3

Location301 または 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.
于 2012-09-19T14:45:48.057 に答える
0

誰かがこれに出くわした場合、これが私がやったことです:

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).
于 2012-09-19T14:11:14.177 に答える