从windowsphone向mvc4 webapi发送字符串(xml或json)列表

时间:2012-10-05 04:52:36

标签: windows-phone-7 asp.net-mvc-4 asp.net-web-api

我是Windows-phone以及mvc4 Web-API的新手。我正在尝试从windows-phone发送详细信息,并希望将这些详细信息作为查询字符串在mvc4 web-API中获取。我现在有数据列表,但我不知道如何发送它并在Web-API需要建议或示例链接中接收它。

1 个答案:

答案 0 :(得分:0)

您可以先查看此Contact Manager Web API sample

  

我正在尝试从windows-phone发送详细信息,并希望将这些详细信息作为查询字符串在mvc4 web-API中获取

解决方案#1:
通过从查询字符串传递字符串列表,您需要将操作参数标记为[FromUri] ...

public class ValuesController : ApiController
{
    // POST api/values
    public void Post([FromUri] List<string> arrOfString)
    {
    }
}

...并且查询字符串需要采用arrOfString [] = item1&amp; arrayOfString [] = item2&amp; ...&amp; arrayOfString [] = itemN的形式。以下是Windows Phone的外观示例:

        WebClient client = new WebClient();
        client.UploadStringCompleted += new UploadStringCompletedEventHandler(...);
        client.UploadStringAsync(new Uri("http://localhost/api/values?arrOfString[]=a&arrayOfString[]=b&arrayOfString[]=c"), string.Empty);

解决方案#2:
或者,您可以没有在查询字符串中传递数据的硬性要求,在请求正文中传递字符串列表更简单:

Web API服务器:

public class ValuesController : ApiController
{
    // POST api/values
    public void Post(List<string> arrOfString)
    {
    }
}

Windows Phone客户端:

        WebClient client = new WebClient();
        client.Headers["Content-Type"] = "application/json";

        var data = JsonConvert.SerializeObject(new List<string>() { "a", "b", "c" });

        client.UploadStringCompleted += new UploadStringCompletedEventHandler(...);
        client.UploadStringAsync(new Uri("http://localhost/api/values"), "POST", data);