2016-12-21 6 views
1

Ich verwende C++ REST SDK, um eine Antwort von der API zu erhalten, und ich muss Concurrency::streams::basic_istream zu byte[] konvertieren.Convert Stream Antwort auf Byte [] mit C++ REST SDK

pplx::task<void> GetResponse() 
{ 
    http_client client(url); 
    return client.request(methods::GET).then([](http_response response) 
    { 
     std::wostringstream ss; 
     ss << L"Server returned returned status code " << response.status_code() << L'.' << std::endl; 
     std::wcout << ss.str(); 

     auto bodyStream = response.body(); 
    }); 
} 

bodyStream ist vom Typ Concurrency::streams::basic_istream.

Die content-type der Antwort, die ich bekommen ist application/octet-stream.

Wie kann ich es byte[] konvertieren?

+0

Was meinst du mit byte []? Siehe http://stackoverflow.com/questions/16489407/how-to-create-a-byte-array-in-c für weitere Informationen? – Appleman1234

Antwort

0

Was ist mit der Methode http_response::extract_vector, um den Antworttext als Byte-Array zurückzugeben?

pplx::task<std::vector<unsigned char>> GetResponse() 
{ 
    http_client client(url); 
    return client.request(methods::GET).then([](http_response response) 
    { 
     std::wostringstream ss; 
     ss << L"Server returned returned status code " << response.status_code() << L'.' << std::endl; 
     std::wcout << ss.str(); 

     return response.extract_vector(); 
    }); 
} 

Oder noch einfacher, wenn Sie brauchen nicht die stdout Protokollierung:

pplx::task<std::vector<unsigned char>> GetResponse() 
{ 
    http_client client(url); 
    return client.request(methods::GET).get().extract_vector(); 
} 

Sie können dann data() auf die zurück vector rufen einen Zeiger auf das zugrunde liegende unsigned char-Array zu erhalten (das entspricht zu einem Byte-Array).