2012-07-13 113 views
0

嗨,即時通訊在Linux服務器上使用PHP來接收來自Windows服務器上託管的WebService的響應。從響應中收到的XML格式不正確

我使用下面的PHP讀取響應: -

while (!feof($socket)) { 
    $result .= fgets($socket, 4096); 
} 

fclose($socket); 

if ($debug) echo '<pre>',$result,'</pre>'; 

顯然,當我收到的正是出於格式的響應,與標籤之間的斷裂線,如下所示: -

/9J/4AAQSkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAAAFESAAQAAAABAAAAAAAAAAA AAYagAACxj

insetead的像這樣的: -

 </ResponseHdr><ResGetCustAreaSnapshot><cmc:GetCustAreaSnapshot xmlns:cmc="http://tnb.com.my/CGIS/D/cmc_customermgnt"><cmc:MAP_IMAGE_ZOOM1000>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 

顯然甚至從這裏我不能顯示的標籤,而不使用代碼塊格式正確。

會真的很感激,如果有人能指出我在正確的方向尋找什麼來解決這個問題。

謝謝。

回答

0

'你看你的調試輸出:瀏覽器內還是終端內?難道你只是通過在瀏覽器中將其視爲html來回復吞下的回覆中的XML標籤(「< ...>」)?

如果不是這種情況,我會檢查較低級別答覆的內容。使用'tcpdump'或'wireshark'轉儲實際內容,而不必依賴更高級別的輸出。

0

嘗試var_dump(htmlspecialchars($result))而不是echo