使用套接字的c++ HTTP GET
C++ HTTP GET using socket
我用下面的代码连接到服务器
web_socket = socket(AF_INET, SOCK_STREAM, 0);
memset(&server_address, 0, sizeof(struct sockaddr_in));
inet_pton(AF_inet, "166.111.1.1", &server_address.sin_addr);
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8080);
indicator = connect(web_socket, (struct sockaddr *) &server_address, sizeof(server_address));
执行上面的代码导致指示器为0,这意味着连接到服务器是成功的,但是当我试图写
string request = "GET http://166.111.1.1:8080/sensor?value=10.3";
indicator = write(web_socket, request.c_str(), request.length());
下面什么也看不见 http://166.111.1.1:8080/sensor?value=10.3
或
http://166.111.1.1:8080/sensor
虽然指示符等于请求长度。
上面的代码有什么问题吗?我正在测试Ubuntu 12.04使用QT Creator, GCC
HTTP请求(和应答)报头以序列rnrn
终止;标头内的各个行用单个rn
分隔。所以你需要的是:
string request("GET http://166.111.1.1:8080/sensor?value=10.3rnrn");
你实际上不需要协议和IP地址在那里——你已经连接了——所以这可以简化为:
string request("GET /sensor?value=10.3rnrn");
短版本实际上更好(也更规范),因为它与服务器的复杂性更低。
您可以像下面这样使用boost:
boost::asio::ip::tcp::iostream stream;
stream.connect(166.111.1.1, 8080);
stream << "GET /sensor?value=10.3 HTTP/1.1rn";
stream << "Accept: */*rn";
stream << "Connection: closern";
stream << "rn";
相关文章:
- c++程序,在windows下发送带有参数的http get请求
- Qt中HTTP GET响应上的奇怪编码
- 推迟 HTTP GET 响应,直到用户更改数据库中的值
- 使用 C++ 套接字发出 HTTP GET 请求时出现 301 错误
- 如何编写Qt HTTP GET请求
- 在HTTP/GET后几秒钟引发Poco::Net::NoMessageException
- 如何使用Java发送HTTP GET,并使用用C++编写的CGI应用程序打印QUERY_STRING环境变量
- 使用带有gsoap代理类的gsoap独立服务器实现http-get
- 使用boost::asio发送http GET请求,类似于cURL
- 使用C++获取HTTP get参数
- 如何在Qt/C++中访问HTTP GET/POST API
- C++HTTP GET请求问题
- libcurl C++添加 HTTP get 参数
- 带有参数的 HTTP GET 请求
- 使用http get下载图片只会下载其中的一小部分
- 在c++中获取字节范围的HTTP GET请求
- 带有boost oauth2访问令牌的HTTP GET请求
- 使用套接字的c++ HTTP GET
- Google.Com 上的 http GET 请求返回"Error 302 page has been moved"
- QT HTTP GET,怎么了?