Asp.net mvc 4 MVC Web API上带有数组参数的PostAsync请求

Asp.net mvc 4 MVC Web API上带有数组参数的PostAsync请求,asp.net-mvc-4,asp.net-web-api,xamarin.forms,dotnet-httpclient,asp.net-web-api-routing,Asp.net Mvc 4,Asp.net Web Api,Xamarin.forms,Dotnet Httpclient,Asp.net Web Api Routing,我有一个Xamarin应用程序,它具有带有参数数组列表的POST请求,在我的MVCWebAPI上,我们使用了代码优先实体框架。两者都是独立的项目解决方案(.sln) 在我的Xamarin项目中,我有一个PostAsync请求,它提供数组值列表 using (var client = new HttpClient()) { Parameter = string.Format("type={0}&param={1}",type, param[]);

我有一个Xamarin应用程序,它具有带有参数数组列表的POST请求,在我的MVCWebAPI上,我们使用了代码优先实体框架。两者都是独立的项目解决方案(.sln)

在我的Xamarin项目中,我有一个PostAsync请求,它提供数组值列表

  using (var client = new HttpClient())
        {
           Parameter =  string.Format("type={0}&param={1}",type, param[]);

            var data = JsonConvert.SerializeObject(parameters);
            var content = new StringContent(data, Encoding.UTF8, "application/json");
            using (var response = await client.PostAsync(url, content))
            {
                using (var responseContent = response.Content)
                {
                    result = await responseContent.ReadAsStringAsync();
                }
            }
      }
然后在我的WebAPI控制器中,我的客户端也有相同的参数

    [System.Web.Http.AcceptVerbs("GET", "POST")]
    [System.Web.Http.HttpPost]
    [Route("type={type}&param={param}")]
    public BasicResponse applog([FromUri] ProfilingType type , List<string> param)
    {
        if (ModelState.IsValid == false)
        {
            throw new ModelValidationException("Model state is invalid.");
        }

        try
        {
            if(type == ProfilingType.Login)
            {
                var command = new SendDataProfilingCommand(param);
                CommandHandler.Execute(command);
            }
            else
            {
                var command = new UpdateDataProfilingCommand(type,param);
                CommandHandler.Execute(command);
            }

        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        return new BasicResponse
        {
            Status = true,
            Message = Ok().ToString()
        };
    }
[System.Web.Http.AcceptVerbs(“GET”、“POST”)]
[System.Web.Http.HttpPost]
[路由(“type={type}¶m={param}”)]
public BasicResponse applog([FromUri]ProfilingType类型,列表参数)
{
if(ModelState.IsValid==false)
{
抛出新的ModelValidationException(“模型状态无效”);
}
尝试
{
if(type==ProfilingType.Login)
{
var命令=新的SendDataProfilingCommand(参数);
CommandHandler.Execute(命令);
}
其他的
{
var命令=新的UpdateDataProfilingCommand(类型,参数);
CommandHandler.Execute(命令);
}
}
捕获(例外e)
{
抛出新异常(e.Message);
}
返回新的基本应答
{
状态=真,
Message=Ok().ToString()消息
};
}
因为我不熟悉API,所以我想先在Postman甚至URL上测试它。但我的问题是当我尝试使用下面的url测试它时

菲律宾马尼拉,0,0]

我收到这条消息:没有找到与请求URI匹配的HTTP资源


我的问题是,如何在URL或邮递员中使用列表参数测试我的Web API?在向Xamarin PostAsync请求发送post请求时,我可以使用什么格式?

您不需要作为内容发送

    using (var client = new HttpClient())
    {
       Parameter =  string.Format("type={0}&param={1}",type, param[]);

       url = url + "?" + Parameter;

        using (var response = await client.PostAsync(url))
        {
            using (var responseContent = response.Content)
            {
                result = await responseContent.ReadAsStringAsync();
            }
        }
  }

可能的副本请参阅复制链接。您为数组生成的URL不正确。