2014-01-11 4 views
1

Я отправляю запрос с использованием ServerXMLHTTP и используя плагин HTTPRequester. Я вижу, что ответ для моего запроса - это необработанные двоичные данные запрошенного файла. Мне нужно прочитать и сохранить эти двоичные данные в байте [], но я продолжаю получать ошибку: Конец файла, достигший недопустимого состояния для текущей кодировки.Как читать двоичный ответ от ServerXMLHTTP?

Вот мой код:

ServerXMLHTTP HTTPRequest=new ServerXMLHTTP(); 
HTTPRequest.open("POST",@"https://thetargetwebsite/",false); 
HTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
HTTPRequest.send("file_id=" + file_id); 
string binaryfile=HTTPRequest.responseText; // causes the error 
//OR 
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); 
byte[] bytes = encoding.GetBytes(HTTPRequest.responseText); // also causes the error 

Можете ли вы мне помочь с тем, как читать текст réponse с бинарными данными?

EDIT: Если я не использую ServerXMLHTTP, то что я должен использовать вместо этого?

ответ

1

Я использовал это вместо того, чтобы и она работала хорошо:

  byte[] result; 
     byte[] buffer = new byte[4096]; 

     System.Net.WebRequest wr = System.Net.WebRequest.Create(url); 

     using (System.Net.WebResponse response = wr.GetResponse()) 
     { 
      using (Stream responseStream = response.GetResponseStream()) 
      { 
       using (MemoryStream memoryStream = new MemoryStream()) 
       { 
        int count = 0; 
        do 
        { 
         count = responseStream.Read(buffer, 0, buffer.Length); 
         memoryStream.Write(buffer, 0, count); 

        } while (count != 0); 

        result = memoryStream.ToArray(); 

       } 
      } 
     } 
Смежные вопросы