Calling REST from Windows Phone 8.1 using PostAsync, HttpClient & Json

My question is very similar to Calling MVC4 WebAPI methods from C# Metro UI Client using PostAsync, HttpClient & Json which was not sufficient for me to resolve my problem.

Here is my code in a Windows Phone 8.1 project :

using (var httpClient = new HttpClient())
                httpClient.BaseAddress = new Uri(baseAddress);
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "YW5vbnltb3VzOmFub255bW91cw==");

                var message = "{ \"userName\" : \"WebAppUser\", \"password\" : \"M@mie!duCanta1l\" }";
                var json_object = JsonConvert.SerializeObject(message);

                HttpContent content = new StringContent(json_object.ToString(), Encoding.UTF8);
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                HttpResponseMessage response = httpClient.PostAsync(baseAddress + "/s/VpCredentials/1.0/IAuthentication/REST_JSON/Validate", content).Result;
                string statusCode = response.StatusCode.ToString();

                Task<string> responseBody = response.Content.ReadAsStringAsync();

responseBody would always return a short piece of html with in it, indicating the call failed. The same call built in Postman in Chrome returns the following successful string :

    "ValidateResult": {
        "Expiration": "/Date(1404214568532+0200)/",
        "Token": "P36Hm9K9zI1gm75hfOqI6hudfdGw8y7Zu1fVgbaSHp7ayvfLUn4YtNxU/8siJ7Wa",
        "UserName": "WebAppUser"
    "result": 1,
    "analytics": true

Do you have any idea what I'm doing wrong in my C# code ? Thanks.


There are two problems here.

Problem 1 - Use of HttpClient BaseAddress

Related: Why is HttpClient BaseAddress not working?

  1. Make sure baseAddress ends with a forward slash (/).
  2. In this call, get rid of the leading forward slash (/) and don't prepend the baseAddress, which will be prepended automatically:


    httpClient.PostAsync(baseAddress + "/s/VpCredentials/1.0/IAuthentication/REST_JSON/Validate", content).Result;


    httpClient.PostAsync("s/VpCredentials/1.0/IAuthentication/REST_JSON/Validate", content).Result;

Problem 2 - Creation of Request Body JSON

Don't do this:

var message = "{ \"userName\" : \"WebAppUser\", \"password\" : \"M@mie!duCanta1l\" }";
var json_object = JsonConvert.SerializeObject(message);

That is creating a JSON-serialized string that contains JSON - a form of double-encoding which is very likely not what you want. You generally shouldn't ever be creating JSON-data string literals in your code.

Do this:

var message = new
    userName = "WebAppUser",
    password = "M@mie!duCanta1l"
var json_object = JsonConvert.SerializeObject(message);

Need Your Help

Stacked polyline renderer for JFreeChart?

java jfreechart

Is there any renderer for JFreeChart for creating charts of stacked polylines?

How to create a semi transparent shape?

c++ opencv shape alpha-transparency

I would like to know how to draw semi-transparent shapes in OpenCV, similar to those in the image below (from

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.