-1
私はウェブサイトでC++コンソールアプリケーションを接続し、htmlページを取得する必要があります。私はこのコードを使用します。C++とクリーンコードを使用してHTTP GETリクエストを使用するには?
int main() {
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
cout << "WSAStartup failed.\n";
system("pause");
return 1;
}
SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct hostent *host;
host = gethostbyname("www.giallozafferano.it");
SOCKADDR_IN SockAddr;
SockAddr.sin_port = htons(80);
SockAddr.sin_family = AF_INET;
SockAddr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
cout << "Connecting...\n";
if (connect(Socket, (SOCKADDR*)(&SockAddr), sizeof(SockAddr)) != 0) {
cout << "Could not connect";
system("pause");
return 1;
}
cout << "Connected.\n";
send(Socket, "GET/HTTP/1.1\r\nHost: www.giallozafferano.it/ricerca-ricette/pasta/\r\nConnection: close\r\n\r\n", strlen("GET/HTTP/1.1\r\nHost: www.giallozafferano.it/ricerca-ricette/pasta/\r\nConnection: close\r\n\r\n"), 0);
char buffer[10000];
int nDataLength;
while ((nDataLength = recv(Socket, buffer, 10000, 0)) > 0) {
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
i += 1;
}
}
string page(buffer);
page = page.erase(page.size()-1);
cout << endl << page << endl;
size_t found = page.find("<Risultati Ricerca");
if (found != std::string::npos) {
cout << "risultati found at position: " << found << '\n';
}
closesocket(Socket);
WSACleanup();
system("pause");
return 0;
}
それは動作しますが、サイトの結果は、私がサイトに接続するたびに異なっている...誰かが私を助けることができますか?
Prego。私は、イタリア語のvengano bannateのイタリア語で、私はドナンドゥ・セ・ル・リスポステ... – marom
私はいいとは思いますが、おかげさまではありますが、それは5回働いていましたが、今度は再び働きません。 ..質問をもう一度申し訳ありません@marom –
もしあなたがLinuxの箱を持っていれば、あなたのプログラムの出力をwgetの出力と比較してみてください。または、 "windows用wget"のgnuバージョン – marom