Forum Discussion

jake_rage's avatar
jake_rage
New Member
1 year ago

Web.contents auto adding Expect header

I am trying to connect to a graphql API using the follwing:

let
        query = Web.Contents(
            "http:****************",
           [
                Headers=[
                    #"Content-Type"="application/json",
                    #"x-token-id"="1************",
                    #"x-token-value"="W*************"
                ],
                Content = Text.ToBinary(
                     "{""query"": ""query GetEvents { events( filter: { time: { between: [""2024-09-11T00:00:00Z"", ""2024-09-12T00:00:00Z""] } }, first: 1 ) { edges { node { id } } }}""}"
                ),
                Timeout = #duration(0,0,5,0), // Set timeout to 5 minutes
                ManualStatusHandling = {500}  // Handle 500 errors manually
            ]
        ),

        // Handle the response
        StatusCode = Value.Metadata(query)[Response.Status], // Extract status code from metadata
        RawResponse = Text.FromBinary(query),                // Convert raw binary response to text
        ParsedResult = try Json.Document(query) otherwise RawResponse, // Try parsing the result or return raw if it fails

        // Build a structured output for debugging
        Result = if StatusCode = 500 then
                    // Return an error with detailed information
                    Error.Record("ServerError", "500 Internal Server Error", [
                        RawResponse = RawResponse,
                        StatusCode = StatusCode
                    ])
                 else
                    ParsedResult
    in
        // Return the detailed result with status and raw response for debugging
        [StatusCode = StatusCode, RawResponse = RawResponse, Result = Result];

I am getting this error:
statusCode\":500,\"code\":\"FST_REPLY_FROM_INTERNAL_SERVER_ERROR\",\"error\":\"Internal Server Error\",\"message\":\"expect header not supported\"}
Is there anyway to prevent web.Contents from attaching the expect header?

I was able to force the query to work by creating running nginx x server using the follwoing config so I know it is coming from web.contents:
http {
server {
listen 80;

location /graphql {
proxy_set_header Expect "";
proxy_pass https://d*********************;
}
}
}

Thank you for your help

3 Replies