0
HttpClient myClient = new HttpClient(); 
myClient.BaseAddress = new Uri(URL); 

Базовый адрес, указанный на клиенте в его URL-адресе.Xamarin__HttpClient__HttpResponseMessage-Content --- Получение HTML вместо JSON

var encodedObject = JsonConvert.SerializeObject(Obj); 
myClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
HttpResponseMessage response = await myClient.PostAsync("test.php/yourAPI",new StringContent(encodedObject, System.Text.Encoding.UTF8, "application/json")); 
if (response.IsSuccessStatusCode) 
{ 
    var responseContent = response.ToString(); 
    var responsebody = response.Content.ToString(); 
    Stream receiveStream = response.GetResponseStream(); 
    string responseBodyAsText = response.Content.ReadAsStringAsync().Result; 
} 
+0

Вы также управляете кодом на стороне сервера? – Nkosi

+0

Вдалеке Да! это не общедоступный сервер! ответить на ваш вопрос –

+0

Во многих случаях сервер бросает ошибку и по умолчанию выполняет ошибку страницы (html). конечную точку, которую вы вызываете. Это веб-api или обычный Asp.Net MVC – Nkosi

ответ

0

Метод PostAsync имеет в качестве первого аргумента полный URI из API. Поэтому должно быть следующим:

HttpResponseMessage response = await myClient.PostAsync("http://bla-bla-bla/test.php/test",new StringContent(encodedObject, System.Text.Encoding.UTF8, "application/json")); 

И нет необходимости определять BaseAddress.

0

Может быть проблемой для обсуждения контента. Попробуйте очистить заголовок Accept перед добавлением JSon носителя типа

myClient.DefaultRequestHeaders.Accept.Clear(); 
myClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
//...other code removed for brevity. 

этот код устанавливает заголовок Accept в «приложение/JSON», который сообщает серверу для отправки данных в формате JSON.

Ссылка источник: Calling a Web API From a .NET Client in ASP.NET Web API 2

+0

Уже пробовал. Тот же вопрос. Содержимое HTML вместо содержимого JSON –