كيف يمكنني استخراج استجابة هتب عند استخدام ليبكورلب?
سؤال
في محاولة لاستخدام ليبكورلب (مجمع ج wrapper إلى ليبكورل) لنشر نموذج والحصول على الاستجابة.كل شيء يعمل ، ولكن ليس لدي أي فكرة عن كيفية الحصول برمجيا الوصول إلى استجابة من كورلب:: كائن سهل بعد الانتهاء من الصفقة هتب.بشكل أساسي:
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
...
curlpp::Easy foo;
foo.setOpt( new curlpp::options::Url( "http://example.com/" ) );
foo.setOpt( new curlpp::options::Verbose( true ) );
...many other options set...
foo.perform(); // this executes the HTTP transaction
عند تشغيل هذا الرمز ، لأن Verbose
تم تعيينه على true
أستطيع أن أرى استجابة الحصول على الإخراج إلى ستدوت.ولكن كيف يمكنني الوصول إلى الاستجابة الكاملة بدلا من التخلص منها?و كورلب:: من السهل لا يبدو أن لديها أي طرق للوصول إلى الاستجابة.
الكثير من الزيارات في جوجل مع الناس يسألون نفس السؤال ، ولكن لا ردود.القائمة البريدية كورلب هي منطقة ميتة ، وقسم أبي من موقع ويب كورلب تم كسر لمدة عام.
المحلول
هذه هي الطريقة التي فعلت ذلك أخيرا:
// HTTP response body (not headers) will be sent directly to this stringstream
std::stringstream response;
curlpp::Easy foo;
foo.setOpt( new curlpp::options::Url( "http://www.example.com/" ) );
foo.setOpt( new curlpp::options::UserPwd( "blah:passwd" ) );
foo.setOpt( new curlpp::options::WriteStream( &response ) );
// send our request to the web server
foo.perform();
مرة واحدة foo.perform()
العوائد ، هيئة الاستجابة الكاملة متاحة الآن في الدفق المقدم في WriteStream()
.
نصائح أخرى
ربما تم تحديث كورلب منذ طرح السؤال.أنا أستخدم هذا الذي وجدته في مثال 04.حزب الشعب الكمبودي.
#include <curlpp/Infos.hpp>
long http_code = 0;
request.perform();
http_code = curlpp::infos::ResponseCode::get(request);
if (http_code == 200) {
std::cout << "Request succeeded, response: " << http_code << std::endl;
} else {
std::cout << "Request failed, response: " << http_code << std::endl;
}