Problem is HttpClient

Anonymous
2022-11-04T09:22:03.543+00:00

Hi,

I have the below code that I am 100% sure about the URL and I am also verifying the PackageID when I Breakpoint.

But the problem is the result is always zero rows although when I use the same URL in Postman Ia m getting the correct output

What could be the reason please?

using (httpClient = new HttpClient())  
{  
    httpClient.BaseAddress = new Uri("https://www.jassimalrahma.com/package.php");  
  
    var content = new FormUrlEncodedContent(new[]  
    {  
        new KeyValuePair<string, string>("package", PackageID),  
    });  
  
    var response = await httpClient.PostAsync("https://www.jassimalrahma.com/package.php", content);  
  
    var result = await response.Content.ReadAsStringAsync();  
  
    List<PackageDetailsData> data = JsonSerializer.Deserialize<List<PackageDetailsData>>(result);  
  
    LabelPackageName.Text = data[0].package_name;  
}  

Here is my Postman:

257277-screenshot-2022-11-04-at-62558-pm.png

Developer technologies | C#
Developer technologies | C#
An object-oriented and type-safe programming language that has its roots in the C family of languages and includes support for component-oriented programming.
{count} votes

2 answers

Sort by: Most helpful
  1. P a u l 10,766 Reputation points
    2022-11-04T09:31:40.467+00:00

    It's likely that you're reading the body of a bad response. Under your var response = ... like try adding this:

       response.EnsureSuccessStatusCode();  
    

    My bet is the request was a 300 range status code (redirect). If that's the case you check the response.Headers.Location property to see where the server is trying to redirect you.


  2. Bruce (SqlWork.com) 82,061 Reputation points Volunteer Moderator
    2022-11-04T15:44:37.487+00:00

    you are probably send a bad id. the following code works:

    using System.Net.Http;  
    using System.Text.Json;  
      
    var PackageID = "2";  
    using (var httpClient = new HttpClient())  
    {  
        httpClient.BaseAddress = new Uri("https://www.jassimalrahma.com/package.php");  
        var content = new FormUrlEncodedContent(new[]  
        {  
             new KeyValuePair<string, string>("package", PackageID),  
        });  
      
        var response = await httpClient.PostAsync("https://www.jassimalrahma.com/package.php", content);  
      
        var result = await response.Content.ReadAsStringAsync();  
      
        List<PackageDetailsData> data = JsonSerializer.Deserialize<List<PackageDetailsData>>(result);  
      
        Console.WriteLine(data[0].package_name);  
    }  
      
      
    public class PackageDetailsData  
    {  
        public int package_id { get; set; }  
        public string? package_uuid { get; set; }  
        public string? package_name { get; set; }  
    }  
    

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.