使用 httpClient windows Phone 8.1 发布 JSON 对象

Posted

技术标签:

【中文标题】使用 httpClient windows Phone 8.1 发布 JSON 对象【英文标题】:Post JSON Object using httpClient windows Phone 8.1 【发布时间】:2014-11-14 12:40:58 【问题描述】:

我正在尝试从 Windows Phone 应用程序将 json 对象发布到 web api 项目,但我仍然收到 404 错误。对于 post 方法,我使用的是该代码:

Mail mailToCheck = new Mail();
try
             
                 mailToCheck.MailProfil = TxtBox_mail.Text.ToString();
                 string json = JsonConvert.SerializeObject(mailToCheck);
                 var httpClient = new System.Net.Http.HttpClient(new HttpClientHandler());
                 System.Net.Http.HttpResponseMessage response = await httpClient.PostAsync(new Uri("http://uri/api/Profil/CheckMail"), new StringContent(json));
                 var responseString = await response.Content.ReadAsStringAsync();
             
             catch (Exception ex)
             
                 MessageBox.Show(ex.HResult.ToString());
             

我的控制器上的 CheckMail 方法:

[HttpPost]
    [Route("api/Profil/CheckMail")]
    public IHttpActionResult CheckMail([FromBody]Mail MailProfil)
    
        if (MailProfil.MailProfil != null)
        
            try
            
                bool exists = Librairie.Profils.mailExists(MailProfil.MailProfil);
                return Ok(exists);
            
            catch(Exception ex)
            
                return InternalServerError(ex);
            
        
        else
        
            return BadRequest();
        
    

Mail 对象在应用程序中与在 web api 项目中完全相同。有人可以告诉我我在这里做错了什么吗?

【问题讨论】:

尝试使用 .. await httpClient.PostAsJsonAsync<Mail>(new Uri("http://uri/api/Profil/CheckMail/"), mailToCheck); 并添加最后一个 / 是来自 HttpClient 的方法还是我需要添加一些使用?昨天试过了,没找到方法,就是PostAsync 你需要添加对 System.Net.Http.Formatting.dll 的引用 :) 【参考方案1】:

在此处查看一些 HttpClient.PostAsync() 示例:https://monkeyweekend.wordpress.com/2014/10/23/how-to-send-text-json-or-files-using-httpclient-postasync/

【讨论】:

感谢您的链接!今晚我会尽快尝试 感谢您的博客,但仍有一些错误。 HttpStringContent 属于 Windows.Net.http 并且 HttpClient 的 PostAsync 方法正在等待 HttpContent 而不是 HttpStringContent... 有两个堆栈。 Windows.Web.Http 专为 Windows 运行时设计。

以上是关于使用 httpClient windows Phone 8.1 发布 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章

通用 Windows 项目 - HttpClient 异常

Windows 身份验证不适用于 HttpClient [重复]

使用 PostAsync、HttpClient 和 Json 从 Windows Phone 8.1 调用 REST

HttpClient 和 windows phone 8 便携版

Windows PCL HttpClient

在 Windows 窗体的 HttpClient 类中使用 DelegatingHandler - 内部处理程序尚未设置