• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Boos.Asio zapytanie https

42 Warsaw Coding Academy
0 głosów
275 wizyt
pytanie zadane 13 czerwca 2018 w C i C++ przez PelikanFix16 Użytkownik (950 p.)

Dzień dobry, chciałem napisać program do pobierania HTML ze strony przy użyciu biblioteki Boost.Asio.

Program nie pobiera całej strony HTML.

Przy pisaniu pomagałem sobie tą stronką.

#include <boost/asio.hpp>
#include <boost/asio/ssl.hpp>
#include <iostream>
#include <stdio.h>

int main(int argc,char* argv[]) {
  
  
  using boost::asio::ip::tcp;
  namespace ssl = boost::asio::ssl;
  typedef ssl::stream<tcp::socket> ssl_socket;
  ssl::context ctx(ssl::context::sslv23);
  ctx.set_default_verify_paths();  
  boost::asio::io_service io_service;
  ssl_socket sock(io_service, ctx);
  tcp::resolver resolver(io_service);
  tcp::resolver::query query("www.google.pl", "https");
  boost::asio::connect(sock.lowest_layer(), resolver.resolve(query));
  sock.lowest_layer().set_option(tcp::no_delay(true));
  sock.set_verify_mode(ssl::verify_peer);
  sock.set_verify_callback(ssl::rfc2818_verification("www.google.pl"));
  sock.handshake(ssl_socket::client); 


  std::array<char,90000> bufferRead;
  boost::system::error_code ec;
  sock.write_some(boost::asio::buffer("GET / HTTP/1.1\r\nHost: www.google.pl\r\nConnection: close\r\n\r\n"));

  while(!ec){
    sock.read_some(boost::asio::buffer(bufferRead),ec);
    

  }

  std::cout << bufferRead.data();
  
  


  return 0;
}

 

komentarz 14 czerwca 2018 przez j23 Mędrzec (195,240 p.)
Że tak nieśmiało zapytam: a dlaczego nie libcurl, który posiada obsługę protokołu HTTP?

1 odpowiedź

0 głosów
odpowiedź 14 czerwca 2018 przez j23 Mędrzec (195,240 p.)

Tak czytaj:

std::string page_content;
size_t bytes_read;

while((bytes_read = sock.read_some(boost::asio::buffer(bufferRead), ec)) > 0)
{
	page_content.append(bufferRead.data(), bytes_read));
}


std::cout << page_content << '\n';

 

Podobne pytania

+1 głos
0 odpowiedzi 814 wizyt
pytanie zadane 29 czerwca 2017 w C i C++ przez Avernis Nałogowiec (27,400 p.)
+2 głosów
1 odpowiedź 359 wizyt
pytanie zadane 26 kwietnia 2021 w JavaScript przez Jakub 0 Pasjonat (23,120 p.)
0 głosów
2 odpowiedzi 476 wizyt

93,398 zapytań

142,390 odpowiedzi

322,580 komentarzy

62,759 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...