The difference between 301 and 302 is primarily relevant to crawlers and
caches.  I agree that it needs to exist, but not clear that a
general-purpose client needs to expose it.  Can you explain your use case
more clearly?  Thanks.

On Thu, Oct 18, 2018 at 1:20 PM Norman Gray <[email protected]> wrote:

>
> Greetings.
>
> In http-client, is there any way of distinguishing between server
> responses 301 and 302?
>
> In test code, I want to confirm that a server is responding with the
> correct redirection code, but can't quite get there.
>
> If I make a request using call-with-input-request and the server
> produces a redirection, then the client code follows the redirection.
>
> If I parameterise that with (parameterize ((max-redirect-depth 0)) ...),
> then the client library doesn't follow the redirection but instead
> raises (exn http redirect-depth-exceeded).  That's almost there, except
> that the exception doesn't contain information about _which_
> redirection, 301 or 302, prompted it.  Using (condition->list), I get
>
> redirect-depth-exceeded: e=#<condition: (exn http
> redirect-depth-exceeded)>
> list=(
> (exn (arguments ("http://localhost:8081/host/";))
>    (message "Maximum number of redirects exceeded")
>    (location send-request))
> (http)
> (redirect-depth-exceeded
>    (request #<request>)
>    (new-uri #<URI-common: scheme=http port=8081 host="localhost" path=(/
> "top" "host") query=() fragment=#f>)
>    (uri #<URI-common: scheme=http port=8081 host="localhost" path=(/
> "host" "") query=() fragment=#f>)))
>
> The documentation for call-with-input-request* doesn't suggest that it
> behaves differently from call-with-input-request in this respect.  And
> although call-with-response mentions the possibility of redirects, and
> multiple calls to 'reader', it doesn't suggest that the reader procedure
> has any access to the response headers.
>
> Is there any other way of getting this status code, or do I feel an
> enhancement request coming on?
>
> Possibly better than this handling of redirect-depth-exceeded would be a
> parameter follow-redirects? which defaults to #t, or having
> call-with-input-request return normally (ie, without the exception) in
> the particular case that max-redirect-depth is 0.
>
> I'm using Chicken 4, but as far as I can see, the Chicken 5 http-client
> is identical in this behaviour.
>
> Best wishes,
>
> Norman
>
>
> --
> Norman Gray  :  https://nxg.me.uk
>
> _______________________________________________
> Chicken-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/chicken-users
>
_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to