I'm stunned, thanks so much!

Best,

Ron

On 5/08/2022 11:05, Christian Grün wrote:
This is what we found out (by the help of Wireshark, and some online resources):

• The new JDK HTTP Client does not attach a default "Accept" header to the HTTP Request. • The getty.edu <http://getty.edu> web server (Tomcat?) returns a syntax error when this header is missing in the request. • We also had a look at the 303 redirection. It works fine; with BaseX 10, redirection could even be improved, as protocol changes (http → https) are now supported, too.

A new snapshot with a workaround is online [1,2].

Thanks for the observation.
Christian

[1] https://github.com/BaseXdb/basex/issues/2133
[2] https://files.basex.org/releases/latest/



On Fri, Aug 5, 2022 at 9:22 AM Ron Van den Branden <ron.vdbran...@gmail.com> wrote:

    Hi,

    Thanks for chiming in, Andy! I realized yesterday that I should
    have added how some URLs can be retrieved without problem in
    BaseX-10.0, e.g.:

       let $uri := 'https://www.w3.org'
       returnhttp:send-request(  <http:send-request(><http:request  <http:request>  method="get" 
status-only="true" href="{$uri}"/>)

    ...which is well-formed (to rule out non-XML parser issues), and
    indeed has no redirection, which seems consistent with Andy's
    observation. Yet, https://w3.org also is retrieved successfully,
    which has an initial 301 response (instead of 303).

    Best,

    Ron

    On 4/08/2022 18:34, Andy Bunce wrote:
    There seems to be a 303 redirect. Maybe this is relevant
    https://stackoverflow.com/a/66325588/3210344
    /Andy
    image.png



    On Thu, 4 Aug 2022 at 16:19, Christian Grün
    <christian.gr...@gmail.com> wrote:

        What I have assessed so far is that it’s the Java Client that
        fails to
        retrieve the result. It’s the same response that’s returned
        by BaseX.

        String uri = "http://vocab.getty.edu/aat/300027473.rdf";;
        HttpClient client = HttpClient.newBuilder().build();
        HttpRequest request =
        HttpRequest.newBuilder(URI.create(uri)).build();
        BodyHandler<String> handler =
        HttpResponse.BodyHandlers.ofString();
        HttpResponse<String> result = client.send(request, handler);
        System.out.println(result.statusCode());
        System.out.println(result.body());

        400
        <html><head><title>Apache Tomcat/7.0.42 - Error
        report</title><style><!--H1
        
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}
        H2
        
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;}
        H3
        
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;}
        BODY
        
{font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;}
        B
        
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;}
        P
        
{font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A
        {color : black;}A.name {color : black;}HR {color :
        #525D76;}--></style> </head><body><h1>HTTP Status 400 - </h1><HR
        size="1" noshade="noshade"><p><b>type</b> Status
        report</p><p><b>message</b> <u></u></p><p><b>description</b>
        <u>The
        request sent by the client was syntactically
        incorrect.</u></p><HR
        size="1" noshade="noshade"><h3>Apache
        Tomcat/7.0.42</h3></body></html>

        So we need to find out why the server thinks the Java request is
        »syntactically incorrect«. Maybe we can compare the low-level
        representation of the requests with Java 9 and 10 (?).

Reply via email to