2016-11-25 134 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字符串。HttpClient的PostAsync失敗上Xamarin.Forms(的StatusCode:404)

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

即使下面的代碼工作。

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

結果是404 {的StatusCode:404,ReasonPhrase: '未找到',版本:1.1,內容:System.Net.Http.StreamContent,集管: { 服務器:牛仔 連接:保活 X-已啓動方式:快速 X-Content-Type的選項:nosniff 日期:週五年,2016年11月25日6時27分06秒GMT 途經:1.1 vegur 內容類型:文本/ HTML;字符集= UTF-8 的Content-Length:28 }}

的Heroku僅接收下面的請求。 2016-11-25T06:31:27.827923 + 00:00 heroku [router]:at = info method = POST path =「/ api/createuser」host = domain.herokuapp.com request_id = 1cb51340-05a5-4503- acb5-9e3b45cdf393 FWD = 「61.245.163.5」 DYNO = web.1連接= 1ms的服務= 71個毫秒狀態= 404個字節= 226

我似乎無法找到什麼是錯在這裏。任何幫助將不勝感激。 謝謝!

+0

不能重現。我在問題 –

回答

1

有兩種選擇可以將數據發送到API/URL。通過url參數或POST參數。您通過郵遞員發送的網址通過url參數發送參數(whats the difference?)。

另一方面,您通過POST參數發送參數PostAsync方法HttpClient。這個值在請求正文中以內容類型指定的格式發送。

HttpClient然後嘗試訪問的網址http://domain.herokuapp.com/api/createuser(withtout末尾的參數),而這個網址不存在,這就是爲什麼你會得到404錯誤。

選項1:更改API-方法,該值是通過POST

選項2發送:變更請求在url可變

選項來設置值1是優先停留和正確的方式來達到此目的。因爲你發佈了一些東西給你的api。你的值需要在request-body中,而不是直接在url中。所以改變你的API和你的代碼應該工作

+0

提供的代碼中得到了結果。選項1工作。感謝一堆好的解釋和答案! @Joehl – Heshan

相關問題