我是Web API的新手,我有一个无法解决的问题。
这是我的问题:如何调用需要多个参数的Web API(流或对象以及两个或三个字符串)?如何在Web API中处理这些参数?
例如,我的Web API中有这个方法:
#this is Testing of date : [25/Nov/11:07:20:10]
其中Stream是文件流(或其他情况下的对象)。 如何将所有这些参数添加到客户端请求体?如何从那里拿出来并在方法中使用?
修改: 这个解决方案好吗? 在这里客户:
public class MyController : ApiController
{
[HttpPost]
public MyObject Method(Stream s, string first, string second)
{
// take the parameters and do something
}
}
这里是Web API:
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
queryString["first"] = "true";
queryString["second"] = "false";
var uri = "https://myapi.com/api/mycontroller/method?" + queryString;
HttpResponseMessage response;
byte[] byteData = Encoding.UTF8.GetBytes(myFile);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("<application/json >");
response = await client.PostAsync(uri, content);
}
}
答案 0 :(得分:0)
WebApi不支持以这种方式传递多个参数,只需创建一个dto / model类并将该类从body传递给该方法。
public class Foo
{
public Byte[] s {get;set;}
public string first {get;set;}
public string second {get;set;}
}
WepApi控制器:
public HttpResponseMessage Register([FromBody] Foo foo)
{
//do something
return Ok();
}
<强>更新强>
如果您不想为每种方法创建类。然后你可以使用类似下面的一个,但建议使用第一个。
public HttpResponseMessage Register([FromBody]dynamic value)
{
//convert to attribute
string first = value.first.ToString();
string second = value.second.ToString();
}