void HttpSendRecv_boost::SendHTTP(char * host,char * ref,char * uAgent)
{
boost::system::error_code error;
GET_COOKIE();
rStr.clear();
GET_TEXT(host,ref,uAgent);
boost::asio::write(* socket, request);
boost::array<char, 124> buf;
boost::asio::read_until(*socket, response, "\r\n");
std::istream response_stream(&response);
std::string http_version;
response_stream >> http_version;
unsigned int status_code;
response_stream >> status_code;
if(status_code == 200)
{
while(boost::asio::read(*socket,boost::asio::buffer(buf),boost::asio::transfer_at_least(1), error))
{
if(len<124)
{
}
rStr+=buf.data();
std::cout << buf.data();
}
}
};
Доброго времени суток. Вообщем выше описанна функция, отсылает ХТТП запрос ну и получает страницу. Так вот, пробовал получать страницы различных сайтов в итоге программа не доходя до конца страницы(всегда разное кол-во байт считанных от 9000 до 30000) зависала на read(видимо ждала остальные куски). Объясните... может я что не так делаю, что у меня в сокет приходит не вся страница? Ниже код GET запроса:
void HttpSendRecv_boost::GET_TEXT(char * host,char * ref,char * uAgent)
{
std::ostream request_stream(&request);
request_stream << "GET "<< boost::lexical_cast<std::string>(ref) <<" HTTP/1.1\r\n";
request_stream << "Host: "<<boost::lexical_cast<std::string>(host)<<"\r\n";
request_stream << "User-Agent: "<<boost::lexical_cast<std::string>(uAgent)<<"\r\n";
request_stream << "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
request_stream << "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
request_stream << "Accept-Encoding: gzip,deflate\r\n";
request_stream << "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
request_stream << "Keep-Alive: 300\r\n";
request_stream << "Connection: keep-alive\r\n";
int vSize = (int)cookie.size();
if(vSize>0)
{
request_stream << "Cookie: ";
for(int i=0;i<vSize;i++)
{
request_stream << cookie[i].a <<"="<<cookie[i].b;
}
}
request_stream <<"\r\n";
};