raunakchoraria
raunakchoraria

Reputation: 387

HttpClient behaving differently in .NET Framework 4.8.1 and .NET Core 8 for some APIs

I have a rest API, upon executing that API using HttpClient, it is behaving differently in .NET framework 4.8.1 and .NET Core 8.

The behavior of .NET Core is correct and it matches with Postman.

Screenshot of Postman:

enter image description here

.NET Framework code when no HttpVersion is set explicitly:

    Dim client = New HttpClient()
    Dim request = New HttpRequestMessage(HttpMethod.Post, "https://api_endpint:port/b1s/v2/Login")
    Dim content = New StringContent("{ ""CompanyDB"": ""XXXX"", ""UserName"": ""XXXX"", ""Password"": ""XXXX"" }", Nothing, "application/json")
    request.Content = content
    Dim ff = request.Content.ReadAsStringAsync().Result
    Dim response = client.SendAsync(request).Result
    response.EnsureSuccessStatusCode()

.NET Framework code output when no HttpVersion is set explicitly:

StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
    Connection: close
    Date: Wed, 13 Nov 2024 05:20:37 GMT
    Set-Cookie: ROUTEID=.node2; path=/;Secure;SameSite=None
    Server: Apache/2.4.51
    Server: (Unix)
    Content-Length: 0
}

.NET Framework code when HttpVersion is set to 1.0:

    Dim client = New HttpClient()
    Dim request = New HttpRequestMessage(HttpMethod.Post, "https://api_endpint:port/b1s/v2/Login")
    request.Version = HttpVersion.Version10
    Dim content = New StringContent("{ ""CompanyDB"": ""XXXX"", ""UserName"": ""XXXX"", ""Password"": ""XXXX"" }", Nothing, "application/json")
    request.Content = content
    Dim ff = request.Content.ReadAsStringAsync().Result
    Dim response = client.SendAsync(request).Result
    response.EnsureSuccessStatusCode()

.NET Framework code output when HttpVersion is set to 1.0:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
    Vary: Accept-Encoding
    Date: Wed, 13 Nov 2024 05:27:46 GMT
    Set-Cookie: B1SESSION=<token>;HttpOnly;;Secure;SameSite=None
    Set-Cookie: ROUTEID=.node2; path=/;Secure;SameSite=None
    Server: Apache/2.4.51
    Server: (Unix)
    Connection: close
    Content-Type: application/json; odata.metadata=minimal; charset=utf-8
}

.NET Core code:

    Dim client = New HttpClient()
    Dim request = New HttpRequestMessage(HttpMethod.Post, "https://api_endpint:port/b1s/v2/Login")
    Dim content = New StringContent("{ ""CompanyDB"": ""XXXX"", ""UserName"": ""XXXX"", ""Password"": ""XXXX"" }", Nothing, "application/json")
    request.Content = content
    Dim ff = request.Content.ReadAsStringAsync().Result
    Dim response = client.SendAsync(request).Result
    response.EnsureSuccessStatusCode()

.NET Core output:

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
      Vary: Accept-Encoding
      Date: Wed, 13 Nov 2024 05:27:46 GMT
      Set-Cookie: B1SESSION=<token>;HttpOnly;;Secure;SameSite=None
      Set-Cookie: ROUTEID=.node2; path=/;Secure;SameSite=None
      Server: Apache/2.4.51
      Server: (Unix)
      Connection: close
      Content-Type: application/json; odata.metadata=minimal; charset=utf-8
}

Upvotes: 3

Views: 157

Answers (0)

Related Questions