これは08年に「部分的に」論じられました。皮肉なことに私はまったく同じことを探しています。
http://sourceforge.net/mailarchive/message.php?msg_id=20619477
EDIT:02/14/12
これが最善ではありませんが、それはおそらく最高の時に1kのブロックを書くことでしょう...動作します。 私はあなたの提案を見たいと思います。
std::string szMessage;
.... /* fill your szMessage such as with a Form.write() */ ..
CountingOutputStream _cos(_session.sendRequest(_request))
std::streamsize len = 0;
string::iterator it;
for (it=szMessage.begin() ; it < szMessage.end(); it++) {
len ++;
_cos.put(*it);
if(len %4096 ==0)
cout << "len: " << len << endl;
}
cout << "Chars printed: " << len << endl;
std::istream& rsout = _session.receiveResponse(_response)
std::ostringstream ostr;
StreamCopier::copyStream(rsout, ostr);
// Retrieve response is not necessary if we have the resp code
std::cout << endl; response.write(cout);
std::cout << ostr.str();
int code = response.getStatus();
if (code != nRespCode) {
stringstream s;
s << "HTTP Error(*): " << code;
throw Poco::IOException(s.str());
}
まだそれほど明確ではありません。 – iuwei
これはあまり優雅ではないと思います。しかし、それは動作します。私はそれを私の編集に入れます。ありがとうございました! – iuwei
私はバッファとしてchar buff [HALF_MB]を作成し、最後のチャンクを制御するためにcontent-lengthまたはfile-sizeを使用します:) – iuwei