问题描述
- cpprest 客户端收不到http_response
-
客户端向服务端request请求后,服务器端能接收到http_request,然后reply回复,客户端就无法收到这个http_response,帮忙看看,实在找不出来原因了客户端代码
#include "cpprest/http_client.h" #include "cpprest/filestream.h" using namespace utility; // Common utilities like string conversions using namespace web; // Common features like URIs. using namespace web::http; // Common HTTP functionality using namespace web::http::client; // HTTP client features using namespace concurrency::streams; // Asynchronous streams int main(int argc, char* argv[]) { auto fileStream = std::make_shared<ostream>(); // Open stream to output file. pplx::task<void> requestTask = fstream::open_ostream(U("results.html")).then([=](ostream outFile) { *fileStream = outFile; // Create http_client to send the request. http_client client(U("http://www.bing.com/")); http_client localclient(U("http://localhost:8888")); return localclient.request(methods::GET); }) .then([=](http_response response) { printf("Received response status code:%un", response.status_code()); system("pause"); return response.body().read_to_end(fileStream->streambuf()); }) .then([=](size_t) { return fileStream->close(); }); try { requestTask.wait(); } catch (const std::exception &e) { printf("Error exception:%sn", e.what()); system("pause"); } return 0; }
服务器代码
#include "cpprest/json.h" #include "cpprest/http_listener.h" #include "cpprest/uri.h" #include "cpprest/asyncrt_utils.h" #include "cpprest/http_client.h" using namespace web::http::experimental::listener; using namespace web::http; using namespace web; void handle_get(http_request message) { message.reply(status_codes::OK, U("Hello, World!")); }; void handle_post(http_request message) { message.reply(status_codes::NotFound); }; void handle_put(http_request message) { message.reply(status_codes::NotFound); }; void handle_delete(http_request message) { message.reply(status_codes::NotFound); }; #define TRACE(msg) std::wcout << msg #define TRACE_ACTION(a, k, v) std::wcout << a << L" (" << k << L", " << v << L")n" int main(int argc, char ** argv) { uri_builder uri(U("http://localhost:8888")); http_listener listener(uri.to_uri()); listener.support(methods::GET, handle_get); listener.support(methods::POST, handle_post); listener.support(methods::PUT, handle_put); listener.support(methods::DEL, handle_delete); try { listener .open() .then([&listener](){TRACE(L"nstarting to listenn"); }) .wait(); while (true); } catch (std::exception const & e) { std::wcout << e.what() << std::endl; } catch (...) { std::wcout << "Unknown exception" << std::endl; } return 0; }
解决方案
解决了,好像是给我分配的虚拟机网络有点问题,我换到我实体机运行就正常了
解决方案二:
客户端是否收到响应包,可以抓包分析一下客户端,服务端
解决方案三:
抓包分析看看,,看看数据
时间: 2024-08-08 14:25:28