[英]POSTing to WebApi2 from C#
我一辈子都做不到。 我不断收到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服务。 这应该简直太简单了,这给我带来了偏头痛,哈哈。 我已经尝试了所有我能想到的东西,而且我不得不丢失一些微小的细节...
谢谢!
因为您的API端点只是一个字符串,而不是一个对象,所以WebAPI正在寻找该字符串作为查询字符串参数。 您有两种选择:
在动作的定义中使用[FromBody]属性
public IHttpActionResult Post([FromBody] string testString)
在URL上而不是在正文中发送字符串(可行,但是,如果要通过HTTPS进行安全保护,这将暴露您发布的内容)
有关详细说明和示例,请参见http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.