2013-03-20 22 views
0

使用的Http方法是GET,我調用的是相同的webservice方法(具有相同的參數)。如果接受:application/json,則返回不同的行爲

但是,如果我添加要求與應用程序/ JSON的Accept頭,輸出不同。 原因是我名爲User的對象中的一個位圖字段,其中包含一個頭像圖像。

如果我離開了接受應用程序/ 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" 
    }, 
] 

WebService的mthod是

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

的代碼是一樣的,那麼爲什麼JSON不會返回一個base64字符串嗎?

+2

看起來您的JSON序列化程序無法序列化「Bitmap」類型。您可能需要將其編碼爲簡單的'byte'數組或類似的。 – LukeH 2013-03-20 17:18:39

回答

0

由於LukeH說,將我的位圖轉換爲字節數組解決了我的問題。

相關問題