Reputation: 387
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:
.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