我有一个web api方法,如下所示,
[Route("api/Nltk")]
[HttpPost]
public string Create([FromBody]string text)
{
string result = "Error";
//Assign result here
return result;
}
当我发出POST请求时,出现404 - File or directory not found.
错误。虽然在同一个api中的其他方法(都是GET方法)工作得很好。有关详细信息,http://ozgurakpinar.net/api/Nltk
是完整的网址。
以下是迄今为止我尝试过的方法之一。
var values = new Dictionary<string, string> {
{ "text", "This is a relatively short sentence." },
};
HttpClient client = new HttpClient();
var content = new FormUrlEncodedContent(values);
var result = client.PostAsync("http://ozgurakpinar.net/api/Nltk", content).Result;
编辑:我添加了FromBody属性后,最终调用了该方法,但text
的值为null。
答案 0 :(得分:1)
首先,我想你可能有一个错字。它应该是[FromBody]而不是[FormBody]。
其次,您需要在内容字符串前添加“=”。
即:
client.PostAsync("http://ozgurakpinar.net/api/Nltk", "=" + content)
答案 1 :(得分:0)
当您为您的值命名时,实际上您正在寻找具有该成员的类。在您的情况下,您将发布到接受class having a text member of string type
的方法。
如果您需要发布到具有字符串参数的方法,则无需为其命名。以下是工作代码。
var values = new Dictionary<string, string> {{ "", "This is a relatively short sentence." }};
var content = new FormUrlEncodedContent(values);
var client = new HttpClient();
var result = client.PostAsync("http://localhost:49923/api/Nltk", content).Result;
Console.Write(result);