Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-02-2017, 21:32   #1
skeleton
Member
 
L'Avatar di skeleton
 
Iscritto dal: Jul 2009
Messaggi: 81
[C++] Errore 403 - comunicare con pagina web tramite socket

Salve a tutti,

stavo cercando di scrivere un programma in grado di comunicare con diverse web page tramite socket e di salvare il loro contenuto html su client. In pratica gli indirizzi si trovano nel file "file.dat" e per ogni riga dello stesso il pc si mette in comunicazione con il server e riceve la pagina. Il problema nasce dal fatto che spesso (ma non sempre) il risultato del salvataggio della pagina html è
Codice:
HTTP/1.1 403 Forbidden

Content-Type: text/html; charset=iso-8859-1

Content-Length: 235

Date: Wed, 15 Feb 2017 20:28:26 GMT



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//IT">
<HTML><HEAD>
<TITLE>403 Forbidden</TITLE>
</HEAD><BODY>
<H1>Forbidden</H1>
You don't have permission to access 
on this server.<P>
</BODY></HTML>
in cui compare un fatidico errore 403. A cos'è dovuto? E soprattutto come mai questo problema si presenta soltanto alcune volte?


Allego per completezza anche il programma in c++. Perdonate se è scritto male ma è il copia-incolla di diversi file .h e relativi .cpp che ho compattato per non creare ulteriore confusione.

Codice:
#include <winsock2.h>
#include <windows.h>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;


int main(){
	int dataLength = 1;
	char buffer[10000];
	string sendbuf, text_recv;
	string site_name;
	fstream File ("file.dat", ios::in);
	
	cout <<"Download: \n\n";
	
	do{
		WSADATA data;
		WORD p;
		p = MAKEWORD(2, 0);
		if ( WSAStartup(p, &data) != 0){
			cout << "Errore:\n\"Sistema operativo su cui è stato eseguito il programma non valido\"";
			return 1;
		}
	
		SOCKET iResult, server;

		struct sockaddr_in server_addr;
		struct hostent *host;
		
		host = gethostbyname("it.wikipedia.org");
	
		//Inizializzazione della socket
		server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
		
		//Definisco gli attributi dalla socket attraverso la struttura predefinita sockaddr_in
		server_addr.sin_family = AF_INET; //Address family
		server_addr.sin_port = htons(80); //Porta
		server_addr.sin_addr.s_addr = *((unsigned long*)host->h_addr);
		
		iResult = connect(server,(struct sockaddr*)&server_addr, sizeof(sockaddr_in));
		
		//Se ci sono errori nella connessione
		if (iResult != 0) {
			cout<< "Errore:\n\"Impossibile connettersi\"","Connection - Error";
			return 1;
		}
		
		
		File >> site_name;
		cout <<"\t -> "<<site_name<<endl;
		
		sendbuf = "GET /wiki/" + site_name + " http/1.1\nHOST: it.wikipedia.org\n\n";
		send(server,sendbuf.c_str(), sendbuf.length(), 0);
	
		//Creo file su cui salvo la pagina web
		site_name += ".txt";

		do{
			buffer[0] = 0;
			dataLength = recv(server,buffer,10000,0);
			text_recv.append (buffer, dataLength);
		} while(dataLength != 0);
		
		ofstream SaveFile(site_name.c_str(), ios::out);
		SaveFile<<text_recv;
		SaveFile.close();
		
		text_recv = "";
		
		/* Chiusura Comunicazione col Server */		
		closesocket(server);
		WSACleanup();
		
		Sleep(1500);
	} while (!File.eof());
	
	File.close();
	
	return 0;
}
Saluti a tutti e grazie in anticipo per l'aiuto
skeleton è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2017, 09:00   #2
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Ciao,
hai provato a navigare con un browser gli url che stai provando a scaricare?
I motivi per cui stai ottenendo 403 possono essere molteplici: pagine dietro autenticazione, controllo lato server sulla presenza di una sessione, cookie...
Ti merita usare una libreria come cUrl per gestire il protocollo http, sempre che tu non abbia voglia e tempo per implementarti un client http. In buona sostanza aprire un socket non è sufficiente
tomminno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Osservata esplosione di raggi gamma (GRB...
Sean Duffy (amministratore ad interim de...
Renault lancia la super promo: porte ape...
Il tuo portatile ASUS ROG non funziona c...
Zoom migliora il suo operatore virtuale ...
Traguardo Omoda & Jaecoo in Italia: ...
EHT mostra nuove immagini di come cambia...
Il gioiellino di Fastned: aperti in Belg...
La nuova mini workstation AI di MinisFor...
Formula 1 2026, nuove gare Sprint in cal...
MacBook Pro con display OLED e supporto ...
Poste Italiane: dati di milioni di utent...
Microsoft blocca RaccoonO365, rubate olt...
15 anni dopo Skate 3, il gioco torna sot...
Molte novità per MongoDB: version...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:34.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v