2016-07-05 74 views
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

In away是!它不是公共服務器!回答你的問題 –

+0

在很多這樣的情況下,服務器拋出一個錯誤並且默認錯誤頁面(html)。您正在呼叫的端點。它是一個web api或正常Asp.Net MVC – Nkosi

回答

0

方法PostAsync具有作爲第一個參數的API的完整URI。因此,它應該如下所示:

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

而且沒有必要定義BaseAddress。

0

可能是內容協商問題。嘗試添加JSON媒體類型

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

這個代碼將接受頭爲「application/JSON」,它告訴服務器以JSON格式發送數據之前清除Accept頭。

參考源:Calling a Web API From a .NET Client in ASP.NET Web API 2

+0

已經嘗試過。同樣的問題。 HTML內容而不是JSON內容 –

相關問題