Как я могу преобразовать ответ byte [] в действительный XDocument? - PullRequest
6 голосов
/ 10 августа 2010
<?xml version="1.0" encoding="utf-8"?>
<rsp stat="ok">
        <image_hash>cxmHM</image_hash>
        <delete_hash>NNy6VNpiAA</delete_hash>
        <original_image>http://imgur.com/cxmHM.png</original_image>
        <large_thumbnail>http://imgur.com/cxmHMl.png</large_thumbnail>
        <small_thumbnail>http://imgur.com/cxmHMl.png</small_thumbnail>
        <imgur_page>http://imgur.com/cxmHM</imgur_page>
        <delete_page>http://imgur.com/delete/NNy6VNpiAA</delete_page>
</rsp>

Это типичный ответ, который я получу.Я попробовал следующее, но я получаю сообщение об ошибке, сообщающее, что нельзя добавлять символы без пробелов в контент.

XDocument response = new XDocument(w.UploadValues("http://imgur.com/api/upload.xml", values));    

Ответы [ 2 ]

10 голосов
/ 10 августа 2010
byte[] responseData = w.UploadValues("http://imgur.com/api/upload.xml", values);
string responseText = Encoding.ASCII.GetString(responseData);  //  ASCII assumed
XDocument respnseXml = XDocument.Parse(responseText); 

Но эта ошибка также может исходить от values.

1 голос
/ 18 мая 2018

Я понял, что лучше загружать байты в MemoryStream и передавать их в XDocument.Таким образом, вам не придется устранять проблемы с пробелами.

byte[] responseData = w.UploadValues("http://imgur.com/api/upload.xml", values);
using(var ms = new MemoryStream(responseData)) 
{
var responseXml = XDocument.Load(ms);
}
...