繁体   English   中英

从C#发布到WebApi2

[英]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正在寻找该字符串作为查询字符串参数。 您有两种选择:

  1. 在动作的定义中使用[FromBody]属性

     public IHttpActionResult Post([FromBody] string testString) 
  2. 在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM