[Xmarin.android] 呼叫POST的WebApi

摘要:[Xmarin.android] 呼叫POST的WebApi

紀錄一下Xamarim.android去呼叫WebApi的研究。在WebApi的部分就不帶太多細節,如果使用網頁來測試在MVC專案裡面新增的Web Api的話,就是只能測試Get動詞。這一篇我們要測試的是Xamarin.Android去呼叫Post動詞的Web Api。在進入Xamarin.Android之前,先來看看如何如何測試

你的WebApi 在接受Post動詞時正不正常? 這邊推薦兩個好用的工具,POSTMAN跟DHC。這邊用這個工作先來做前端取資料的測試。

 

WebApiController中,如果是使用[FromBody]的方式來接收資訊。

MVC的 Controller 中,以下方方式宣告。這個API接受POST動詞傳送過來的資料。並且回傳一個

字串資料。


public string Post([FromBody]string value)
{
    return "webapi" + value;
}

 

 

因為是以FromBody的方式接收資料,在前端的測試,必須這樣送出資料。(這邊以DHC來測試)

 

特別要注意的是要送出的Content-Type。 在上面帶入的參數是一個[Formbody],所以在Content-type的部分要設定為 application/x-www-form-urlencoded。

 

 WebApiController中,如果是使用Json的方式來接收資訊。

假設要帶入的參數是一個以上。這種情況是常常會遇到的。在Controller裡面做以下的宣告。

首先建立一個類別,然後再Action方法裡面接受傳入這個類別的值。

 


public string Post(Test testobj)
{
    return "value1 = " + testobj.value1 + "value2 = " + testobj.value2;
}

public class Test()
{
public string value1 { get; set; }
public string value2 { get; set; }
}

 

WebApi由本來接收Frombody的資料轉變成接收Json檔案。在前端必須改成送出JSON的資料。

另外在剛才的Content-type中,設定Type為 application/x-www-form-urlencoded。在這部分要改成

application/json。

 

n   在Xamarin iOS與Android裡呼叫POST的WebApi

在 Xamarin環境中,要去呼叫POST 動詞的WebApi一樣是使用webClient這個方式。

剛才的Content-type中,要設定為application/json。


public void Callwebapi()

{

var testobj = new Test ();

    testobj.value1 = "Value1";

    testobj.value2 = "Value2";

   //取得資料

    var webClient = new System.Net.WebClient();

    webClient.Headers.Add("Content-Type", "application/json");

    var result = webClient.UploadString("http://ctyl.azurewebsites.net/api/values", "POST",JsonConvert.SerializeObject(testobj));

 }

 

 

 

參考文獻

Post parameter is always null

http://stackoverflow.com/questions/10984040/post-parameter-is-always-null

MVC4 Web API Rest interface with Multiple Parameters

http://stackoverflow.com/questions/12835074/mvc4-web-api-rest-interface-with-multiple-parameters

如何讓 ASP.NET Web API 無論任何要求都回應 JSON 格式

http://blog.miniasp.com/post/2012/10/12/ASPNET-Web-API-Force-return-JSON-format-instead-of-XML-for-Google-Chrome-Firefox-Safari.aspx

Parameter Binding in ASP.NET Web API

http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

[Web API][筆記] POST 總是 Nothing 或 null

http://www.dotblogs.com.tw/topcat/archive/2013/04/09/101105.aspx

ASP.NET Web API 參數繫結

http://huan-lin.blogspot.com/2013/01/aspnet-web-api-parameter-binding.html