【问题标题】:How to call a WebAPI from WinRT如何从 WinRT 调用 WebAPI
【发布时间】:2015-05-17 19:03:05
【问题描述】:

我尝试从 WinRT 调用 WebAPI。在 WinRT 中,我编写了可序列化的类,我希望将其发送到 WebAPI:

[DataContractAttribute]
public class RecognizeItem
{
    [DataMember()]
    public string Id { get; set; }

    [DataMember()]
    public Windows.UI.Xaml.Media.Imaging.BitmapImage Image { get; set; }
}

下一步向服务器发送数据:

            RecognizeItem system = new RecognizeItem()
            {
                Id = login,
                Image = LoadImage
            };
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            string json = JsonConvert.SerializeObject(system);
            HttpContent content = new StringContent(json); 
            HttpResponseMessage response = await client.PostAsync("api/RecognizeItem/", content);

在 webAPI 的实现中,我实现了一个可序列化的类,如下所示:

[Serializable]
public class RecognizeItem
{
    public string Id { get; set; }

    public Bitmap Image { get; set; }

}

还有我的 ApiController:

public string Post([FromBody] RecognizeItem image)...

但作为回应,我看到以下状态:

StatusCode:415,ReasonPhrase:“不支持的媒体类型”

我该如何解决这个错误?

【问题讨论】:

  • 我认为您的自定义类型中的 BitmapImage 可能会导致问题。序列化前是否尝试过将 Image 属性转换为字节数组?

标签: c# asp.net-web-api windows-runtime


【解决方案1】:

我相信 Content-Type 是内容的标头,而不是请求的标头。

尝试通过将内容类型传递给 StringContent 构造函数来设置您的内容:

替换

HttpContent content = new StringContent(json);

通过

HttpContent content = new StringContent(json,
                                Encoding.UTF8, 
                                "application/json");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2017-05-07
    • 2013-02-20
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多