2016-11-25 5 views
1
var url = "http://domain.herokuapp.com/api/createuser"; 
var item = new { username = "kasunrt1", email = "[email protected]", password = "3333", tele = "123456789" }; 
var uri = new Uri(url); 
var json = JsonConvert.SerializeObject(item); 
var content = new StringContent(json, Encoding.UTF8, "application/json"); 
var client = new HttpClient(); 
var result = await client.PostAsync(url, content); 

サービスが起動&実行されています。以下のようなAPI文字列を手動で実行すると、ブラウザ& postmanで動作します。HttpClientをPostAsync Xamarin.Forms(のStatusCode:404)に失敗

http://domain.herokuapp.com/api/createuser/nameTest/[email protected]/346gf4/123456789

はさえ、以下のコードは動作します。 、のreasonPhrase 404:

var result = await client.PostAsync("http://domain.herokuapp.com/api/createuser/nameTest/[email protected]/346gf4/123456789", null); 

結果は404 {のStatusCodeは 'が見つかりません'、バージョン:1.1、内容:System.Net.Http.StreamContent、ヘッダ: { サーバー:カウボーイ 接続:キープアライブ X-パワード・バイ:エクスプレス X-Content-Typeの-オプション: 日nosniff:金、2016年11月25日午前6時27分06秒GMT 経由:1.1 vegur のContent-Type:テキスト/ html; charset = UTF-8 のContent-Length:28 }}

Herokuのが唯一の次のリクエストを受信します。 2016-11-25T06:31:27.827923 + 00:00 heroku [router]:at = infoメソッド= POSTパス= "/ api/createuser" host = domain.herokuapp.com request_id = 1cb51340-05a5-4503- acb5-9e3b45cdf393 FWD = "61.245.163.5" ダイノ= web.1私はここで間違っているものを見つけるように見えることはできません= 71ms、ステータス= 404バイト= 226

を= 1msのサービスを接続します。どんな助けも高く評価されます。 ありがとう!

+0

再生できません。あなたが質問で提供したコードで結果がOK –

答えて

1

API/URLにデータを送信する2つのオプションがあります。 URLパラメータまたはPOSTパラメータのいずれかを使用します。郵便配達郵便で送るあなたのurlはパラメタをurlパラメタ(whats the difference?)を通して送ります。

もう一方の側では、メソッドがHttpClientのPOSTパラメータを使用してパラメータを送信します。この値は、要求の本文で、コンテンツタイプが指定する形式で送信されます。

HttpClientは、(最後のパラメータwithtout)URL http://domain.herokuapp.com/api/createuserに到達しようとすると、次のURLを使用すると、404エラーを取得する理由です、存在しません。

オプション1:あなたのAPI-方法を変更した値は、オプション2

POST

を経由して送信されます。 url変数

オプションに値を設定するためにあなたの要求を変更して1兼ね備えと正しい方法には、それを達成する。あなたは何かをあなたのAPIにPOSTするので。あなたの価値は、URLにではなく、要求本体にある必要があります。したがって、APIを変更するとコードが正常に動作するはずです

+0

はい。オプション1が働いた。素敵な説明と答えをお寄せいただきありがとうございます! @Joehl – Heshan

関連する問題