# Http outcall stopped

**URL:** <https://forum.dfinity.org/t/http-outcall-stopped/37566>\
**Category:** Language Support\
**Created:** [November 20, 2024, 5:34pm UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566 "2024-11-20T17:34:58Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jaxopaxo](https://avatars.discourse-cdn.com/v4/letter/j/b5ac83/32.png) [@jaxopaxo](https://forum.dfinity.org/u/jaxopaxo)\
**Post date:** [November 20, 2024, 5:34pm UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566/1 "2024-11-20T17:34:58Z")

</div>

Why suddenly HttpOutCall not working, what happened?

Here is the error:  
Call failed:  
Canister: xqsqi-eimaa-aaaxi-q3kxa-cai  
Method: getData(update)  
“Request ID”: “2a45904a2600a10a888d8f7c74b4685ba45c0e6327a84d5889625865285db949”  
“Error code”: “IC0406”  
“Reject code”: “4”  
“Reject message”: “Connecting to icptest-111.europe-west1.run.app failed: Failed to directly connect: hyper\_util::client::legacy::Error(SendRequest, hyper::Error(Http2, Error { kind: Reset(StreamId(1), PROTOCOL\_ERROR, Remote) }))”

---

<div class="post-metadata">

**Author:** ![Vivienne](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/vivienne/32/29170_2.png) [@Vivienne](https://forum.dfinity.org/u/Vivienne)\
**Post date:** [November 21, 2024, 9:48am UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566/2 "2024-11-21T09:48:43Z")

</div>

Can you share the whole request? We suspect it’s because of the headers you send

---

<div class="post-metadata">

**Author:** ![jaxopaxo](https://avatars.discourse-cdn.com/v4/letter/j/b5ac83/32.png) [@jaxopaxo](https://forum.dfinity.org/u/jaxopaxo)\
**Post date:** [November 21, 2024, 10:51am UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566/3 "2024-11-21T10:51:13Z")

</div>

```
let request_headers = [
  { name = "Host"; value = host # ":443" },
  { name = "User-Agent"; value = "icp_google_agent" },
  { name = "Content-Type"; value = "application/json" },
  { name = "Idempotency-Key"; value = idempotency_key },
  { name = "accept"; value = "text/plain" },
  {
    name = apiEndpointSettings.api_key; 
    value = apiEndpointSettings.api_key_value; 
  }
];

```

It always worked

---

<div class="post-metadata">

**Author:** ![jaxopaxo](https://avatars.discourse-cdn.com/v4/letter/j/b5ac83/32.png) [@jaxopaxo](https://forum.dfinity.org/u/jaxopaxo)\
**Post date:** [November 21, 2024, 10:56am UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566/4 "2024-11-21T10:56:23Z")

</div>

```auto
  func _processRequest(idempotency_key : Text, body : Text, resource : Text, verb : HttpOutCallVerb) : async Text {
    let ic : OutcallsTypes.IC = actor ("aaaaa-aa");
    let host : Text = apiEndpointSettings.host;
    let url = apiEndpointSettings.url # resource;
    let request_headers = [
      { name = "Host"; value = host # ":443" },
      { name = "User-Agent"; value = "icp_google_agent" },
      { name = "Content-Type"; value = "application/json" },
      { name = "Idempotency-Key"; value = idempotency_key },
      { name = "accept"; value = "text/plain" },
      {
        name = apiEndpointSettings.api_key; 
        value = apiEndpointSettings.api_key_value; 
      },
    ];

    let request_body_as_Blob : Blob = Text.encodeUtf8(body);
    let request_body_as_nat8 : [Nat8] = Blob.toArray(request_body_as_Blob);

    let transform_context : OutcallsTypes.TransformContext = {
      function = transform;
      context = Blob.fromArray([]);
    };

    let max_response_bytes_nat : Nat = 2000000;
    let max_response_bytes_nat64 : ?Nat64 = ?(Nat64.fromNat(max_response_bytes_nat));

    let http_request : OutcallsTypes.HttpRequestArgs = {
      url = url;
      max_response_bytes = max_response_bytes_nat64; //optional for request
      headers = request_headers;
      body = ?request_body_as_nat8;
      method = verb;
      transform = ?transform_context;
    };

    Cycles.add(apiEndpointSettings.call_cycles);

    let http_response : OutcallsTypes.HttpResponsePayload = await ic.http_request(http_request);
    let response_body : Blob = Blob.fromArray(http_response.body);
    let status_code : Nat = http_response.status;
    let decoded_text : Text = switch (Text.decodeUtf8(response_body)) {
      case (null) { "Error: Unable to decode response. Status code: " # Nat.toText(status_code) };
      case (?y) { "Status code: " # Nat.toText(status_code) # ", Body: " # y };
    };
    return decoded_text;

  };

  public query func transform(raw : OutcallsTypes.TransformArgs) : async OutcallsTypes.CanisterHttpResponsePayload {
    let transformed : OutcallsTypes.CanisterHttpResponsePayload = {
      status = raw.response.status;
      body = raw.response.body;
      headers = [
        {
          name = "Content-Security-Policy";
          value = "default-src 'self'";
        },
        {
          name = "Referrer-Policy";
          value = "strict-origin";
        },
        {
          name = "Permissions-Policy";
          value = "geolocation=(self)";
        },
        {
          name = "Strict-Transport-Security";
          value = "max-age=63072000";
        },
        {
          name = "X-Frame-Options";
          value = "DENY";
        },
        {
          name = "X-Content-Type-Options";
          value = "nosniff";
        },
      ];
    };
    transformed;
  };

```

---

<div class="post-metadata">

**Author:** ![domwoe](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/domwoe/32/5165_2.png) [@domwoe](https://forum.dfinity.org/u/domwoe)\
**Post date:** [November 21, 2024, 1:49pm UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566/5 "2024-11-21T13:49:19Z")

</div>

There was a recent change in the HTTPS Outcall feature to support HTTP/2.  
We didn’t anticipate this to be a breaking change, but it turned out that HTTP/2 doesn’t support setting the `Host` header in the request.

Please try to remove the following line, then the outcall should work again.

> [@jaxopaxo](#):
>
> ` { name = "Host"; value = host # ":443" },`

---

<div class="post-metadata">

**Author:** ![jaxopaxo](https://avatars.discourse-cdn.com/v4/letter/j/b5ac83/32.png) [@jaxopaxo](https://forum.dfinity.org/u/jaxopaxo)\
**Post date:** [November 21, 2024, 2:10pm UTC](https://forum.dfinity.org/t/http-outcall-stopped/37566/6 "2024-11-21T14:10:37Z")

</div>

Problem is solved now, thanks for your time!

```auto
    let request_headers = [
      { name = "authority"; value = host},
      { name = "path"; value = resource},
      { name = "scheme"; value = "https" },
      { name = "User-Agent"; value = "agent007" },
      { name = "Content-Type"; value = "application/json" },
      { name = "Idempotency-Key"; value = idempotency_key },
      { name = "accept"; value = "text/plain" },
      {
        name = settings.api_key; 
        value = settings.api_key_value; 
      },
    ];

```
