我在服务器上有以下代码:
public class UploadController : ApiController
{
public void Put(string filename, string description)
{
...
}
public void Put()
{
...
}
并尝试从客户端调用它:
var clientDescr = new HttpClient();
var postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("filename", "test"));
postData.Add(new KeyValuePair<string, string>("description", "100"));
HttpContent contentDescr = new FormUrlEncodedContent(postData);
clientDescr.PutAsync("http://localhost:8758/api/upload", contentDescr).ContinueWith(
(postTask) =>
{
postTask.Result.EnsureSuccessStatusCode();
});
但是这段代码调用了第二个put方法(没有参数)。为什么以及如何正确调用第一个put方法?
答案 0 :(得分:1)
这里有几个选项:
您可以选择传递查询字符串中的参数,只需将URI更改为:
即可 http://localhost:8758/api/upload?filename=test&description=100
或者您可以让Web API通过将操作更改为以下内容来解析表单数据:
public void Put(FormDataCollection formData)
{
string fileName = formData.Get("fileName");
string description = formData.Get("description");
}
您还可以选择创建一个具有fileName和description属性的类,并将其用作参数,Web API应该能够为您正确绑定它。