我有一个默认的mvc web api实例,它是从Visual Studio 2012模板构建的。它具有以下路由和Post方法在默认的ValuesController中——MVC网站在初始创建后除了Post方法的内容没有修改。另外,我使用.NET框架4.0,因为我计划针对Azure进行目标定位。
注册方法
注册方法
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
和Post方法
// POST api/values
public string Post([FromBody]string value)
{
if (value != null)
{
return "Post was successful";
}
else
return "invalid post, value was null";
}
我创建了一个控制台应用程序,使用HttpClient模拟向服务发送POST请求,但不幸的是,“value”始终为null。在HttpClient上进行PostAsync调用后,Post方法成功执行。
目前并不清楚如何映射我的请求,使得value包含我传递的StringContent...
static void Main(string[] args)
{
string appendUrl = string.Format("api/values");
string totalUrl = "http://localhost:51744/api/values";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/xml");
string content = "Here is my input string";
StringContent sContent = new StringContent(content, Encoding.UTF8, "application/xml");
HttpResponseMessage response = null;
string resultString = null;
client.PostAsync(new Uri(totalUrl), sContent).ContinueWith(responseMessage =>
{
response = responseMessage.Result;
}).Wait();
response.Content.ReadAsStringAsync().ContinueWith(stream =>
{
resultString = stream.Result;
}).Wait();
}
我刚接触MVC Web API和HttpClient,希望能得到帮助,指点我方向,将不胜感激。