0

使用的 Http 方法是 GET,我正在调用相同的 webservice 方法(具有相同的参数)。

但是,如果我添加以请求带有 application/json 的 Accept 标头,则输出会有所不同。原因是我的名为 User 的对象中有一个 Bitmap 字段,它包含一个头像图像。

如果我省略 Accept application/json 标头,这是简化的输出(XML):

<!-- language: lang-xml -->
<ArrayOfUser xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/XTraN4ForcesFSDomain.Domain">
<User>
    <Id>02ddf1e4-ad76-4778-8887-a186014939f8</Id>
    <Avatar xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Drawing" i:nil="true" />
    <IsActive>false</IsActive>
    <LastAccess>0001-01-01T00:00:00</LastAccess>
    <Username>quisquam</Username>
    <!-- Other properties -->
</User>
<User>
    <Id>17db833c-5008-44f0-a713-a186014c22a5</Id>
    <Avatar xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Drawing">
        <Data xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:base64Binary" xmlns="">iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABGdBTUEAAK/INwWK6[...]BIJS/Wd6Pgu/mOoS/HADwfwFUI4VkJHOgAgAAAABJRU5ErkJggg==</Data>
    </Avatar>
    <IsActive>false</IsActive>
    <LastAccess>0001-01-01T00:00:00</LastAccess>
    <Username>labore</Username>
</User>
</ArrayOfUser>

好吧,这很好!图像(Base64)在那里。如果我更改获取 JSON 的请求,它不会返回任何图像,只返回它所代表的类的名称:

<!-- language: lang-json -->
[
    {
        "Username": "quisquam",
         "LastAccess": "0001-01-01T00:00:00",
        "IsActive": false,
        "Avatar": null,
        "Id": "02ddf1e4-ad76-4778-8887-a186014939f8"
   },
   {
       "Username": "reiciendis",
       "LastAccess": "0001-01-01T00:00:00",
       "IsActive": false,
       "Avatar": "System.Drawing.Bitmap",
       "Id": "17db833c-5008-44f0-a713-a186014c22a5"
   },
]

网络服务方法是

<!-- language: lang-c# -->
public IQueryable<User> Get()
{
    // return stuff (no big deal here)
}

代码是一样的,那么为什么 JSON 不会像它应该返回的那样返回 base64 字符串呢?

4

1 回答 1

0

正如LukeH所说,将我的位图转换为字节数组解决了我的问题。

于 2013-03-21T11:41:57.977 回答