如何在WinRT中调用WebAPI

4

我想从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)...

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

状态码:415,原因短语:'不支持的媒体类型'

我该如何解决这个错误?


我认为你自定义类型中的BitmapImage可能会导致问题。在序列化之前,你是否尝试将图像属性转换为字节数组? - JTW
1个回答

0

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

通过将content-type传递给StringContent构造函数来设置您的内容:

替换

HttpContent content = new StringContent(json);

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接