我无法让我的生活得以实现。我一直得到404。
这是WebApi2代码:
[HttpPost]
public IHttpActionResult Post(string testString)
{
if(!string.IsNullOrEmpty(testString))
{
return Ok(testString);
}
else
{
return BadRequest();
}
}
这是WebClient代码:
public async Task PostingToWebServiceShouldWork()
{
var apiEndPoint = new Uri(String.Format("{0}/Paging", ConfigurationManager.AppSettings["ApiEndpoint"].ToString()));
var apiRoot = new Uri(apiEndPoint.GetLeftPart(UriPartial.Authority));
var apiCall = apiEndPoint.PathAndQuery.Substring(1, apiEndPoint.PathAndQuery.Length - 1);
using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
{
client.BaseAddress = apiRoot;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpContent content = new StringContent("testSTring");
HttpResponseMessage response = await client.PostAsync(apiCall, content);
if(response.IsSuccessStatusCode)
{
}
}
}
我只想将一个简单的字符串发布到Web服务。这应该是死的简单,它给了我一个偏头痛,哈哈。我已经尝试了所有我能想到的东西,而且我必须错过一些细节......
谢谢!
答案 0 :(得分:1)
因为您的API端点只是一个字符串而不是一个对象,所以WebAPI正在寻找该字符串作为查询字符串参数。您有两种选择:
在动作的定义
中使用[FromBody]属性public IHttpActionResult Post([FromBody] string testString)
在网址上而不是在正文中发送字符串(有效,但如果您通过HTTPS进行安全保护,则会显示您发布的内容)
有关更深入的解释和示例,请参阅http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api