Fixed 'host' HTTP header not being sent
This commit is contained in:
parent
98897dec02
commit
3b890972d1
@ -43,9 +43,10 @@ namespace fr
|
|||||||
/*!
|
/*!
|
||||||
* Constructs a HTTP request/response to send.
|
* Constructs a HTTP request/response to send.
|
||||||
*
|
*
|
||||||
|
* @param host The host that we're connected to.
|
||||||
* @return The HTTP request
|
* @return The HTTP request
|
||||||
*/
|
*/
|
||||||
virtual std::string construct() const=0;
|
virtual std::string construct(const std::string &host) const=0;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Gets the request type (post, get etc)
|
* Gets the request type (post, get etc)
|
||||||
|
|||||||
@ -31,7 +31,7 @@ namespace fr
|
|||||||
*
|
*
|
||||||
* @return The constructed HTTP request.
|
* @return The constructed HTTP request.
|
||||||
*/
|
*/
|
||||||
std::string construct() const override;
|
std::string construct(const std::string &host) const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ namespace fr
|
|||||||
*
|
*
|
||||||
* @return The constructed HTTP response.
|
* @return The constructed HTTP response.
|
||||||
*/
|
*/
|
||||||
std::string construct() const override;
|
std::string construct(const std::string &host) const override;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -105,27 +105,31 @@ namespace fr
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string HttpRequest::construct() const
|
std::string HttpRequest::construct(const std::string &host) const
|
||||||
{
|
{
|
||||||
//Add HTTP header
|
//Add HTTP header
|
||||||
std::string request = request_type_to_string(request_type) + " " + uri + " HTTP/1.1\r\n";
|
std::string request = request_type_to_string(request_type) + " " + uri + " HTTP/1.1\n";
|
||||||
|
|
||||||
//Add the headers to the request
|
//Add the headers to the request
|
||||||
for(const auto &header : headers)
|
for(const auto &header : headers)
|
||||||
{
|
{
|
||||||
std::string data = header.first + ": " + header.second + "\r\n";
|
std::string data = header.first + ": " + header.second + "\n";
|
||||||
request += data;
|
request += data;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Add in required headers if they're missing
|
//Add in required headers if they're missing
|
||||||
if(headers.find("Connection") == headers.end())
|
if(headers.find("Connection") == headers.end())
|
||||||
request += "Connection: keep-alive\r\n";
|
request += "Connection: keep-alive\n";
|
||||||
|
if(headers.find("Host") == headers.end())
|
||||||
|
request += "Host: " + host + "\n";
|
||||||
|
|
||||||
//Add in space
|
//Add in space
|
||||||
request += "\r\n";
|
request += "\n";
|
||||||
|
|
||||||
//Add in the body
|
//Add in the body
|
||||||
request += body + "\r\n";
|
request += body + "\n";
|
||||||
|
|
||||||
|
std::cout << "constructed: " << std::endl << request << std::endl;
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9,6 +9,7 @@ namespace fr
|
|||||||
{
|
{
|
||||||
void HttpResponse::parse(const std::string &response_data)
|
void HttpResponse::parse(const std::string &response_data)
|
||||||
{
|
{
|
||||||
|
std::cout << "Parsing: " << response_data << std::endl;
|
||||||
//Clear old headers/data
|
//Clear old headers/data
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
@ -56,7 +57,7 @@ namespace fr
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string HttpResponse::construct() const
|
std::string HttpResponse::construct(const std::string &host) const
|
||||||
{
|
{
|
||||||
//Add HTTP header
|
//Add HTTP header
|
||||||
std::string response = "HTTP/1.1 " + std::to_string(status) + " \r\n";
|
std::string response = "HTTP/1.1 " + std::to_string(status) + " \r\n";
|
||||||
|
|||||||
@ -28,7 +28,7 @@ namespace fr
|
|||||||
|
|
||||||
Socket::Status HttpSocket::send(const Http &request)
|
Socket::Status HttpSocket::send(const Http &request)
|
||||||
{
|
{
|
||||||
std::string data = request.construct();
|
std::string data = request.construct(remote_address);
|
||||||
return send_raw(&data[0], data.size());
|
return send_raw(&data[0], data.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,6 +156,8 @@ namespace fr
|
|||||||
|
|
||||||
Socket::Status TcpSocket::connect(const std::string &address, const std::string &port)
|
Socket::Status TcpSocket::connect(const std::string &address, const std::string &port)
|
||||||
{
|
{
|
||||||
|
remote_address = address + ":" + port;
|
||||||
|
|
||||||
addrinfo *info;
|
addrinfo *info;
|
||||||
addrinfo hints;
|
addrinfo hints;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user