2016-07-05 13 views
0
HttpClient myClient = new HttpClient(); 
myClient.BaseAddress = new Uri(URL); 

ベースアドレスはすでにクライアントに指定されています。URLはURLです。Xamarin__HttpClient__HttpResponseMessage-Content --- JSONの代わりにHTMLを取得

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)をデフォルトにしています。呼び出しているエンドポイント。それは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形式でデータを送信するようにサーバに指示JSONメディアタイプ

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

このコードは、「アプリケーション/ JSON」に受け入れヘッダを設定し、追加する前Acceptヘッダをクリアしてみてください。

リファレンスソース:Calling a Web API From a .NET Client in ASP.NET Web API 2

+0

既に試しました。同じ問題。 JSONコンテンツの代わりにHTMLコンテンツ –

関連する問題