2016-12-21 1 views
1

を使用してストリーム応答をbyte []に​​変換します。APIからの応答を得るためにC++ REST SDKを使用しています。Concurrency::streams::basic_istreambyte[]に変換する必要があります。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タイプConcurrency::streams::basic_istreamです。

応答が得られるcontent-typeapplication/octet-streamです。

どうすればbyte[]に変換できますか?

+0

byte []はどういう意味ですか?詳細については、http://stackoverflow.com/questions/16489407/how-to-create-a-byte-array-in-cを参照してください。 – Appleman1234

答えて

0

http_response::extract_vectorメソッドを使用してレスポンスボディをバイト配列として返すのはどうですか?

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(); 
    }); 
} 

あるいはさらに簡単あなたは標準出力のロギングを必要としない場合:

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

その後、等価である(基本となるunsigned char型の配列へのポインタを取得するために戻っvectordata()を呼び出すことができますバイト配列に)。

関連する問題