Sto creando un programma che scarica un semplice file da Internet su Windows, utilizzando l'API della famiglia Wininet perché voglio utilizzare il suo comportamento proxy compatibile con IE. Come tutti sapete, IE corrente ha diverse impostazioni proxy: auto-detect (WPAD), autoconfigurazione (PAC), manualmente singolo URL, server proxy per protocollo, calze, diretto, ... Per la maggior parte degli utenti, il "download diretto" " funziona bene; tuttavia per alcuni utenti (in particolare quelli dietro firewall/NAT), hanno sempre bisogno di speciali impostazioni proxy quando effettuano le connessioni.Creazione di una connessione HTTP robusta per gli utenti fittizi con WinINET
È doloroso scrivere codice per gestire tutti questi casi, quindi spero che WinINET con InternetOpen (INTERNET_OPEN_TYPE_PRECONFIG)
possa aiutarmi. Lo fa per la maggior parte degli utenti, tuttavia trovo ancora alcuni utenti che si lamentano di un errore di connessione. Questi utenti possono avere ambienti di rete molto speciali (ad es. Necessitano di nome utente/password per il proxy) e la connessione diretta non funziona per loro.
A volte gli utenti fittizi avevano una configurazione errata e mi piacerebbe che wininet provasse "tutte" le possibili impostazioni proxy per me; sfortunatamente il INTERNET_OPEN_TYPE_PRECONFIG
proverà solo quello configurato dall'utente, non "tutte le possibili impostazioni del proxy".
Quindi la mia domanda è: come posso creare un programma con la più forte capacità di risolvere tutte le connessioni http (specialmente per la configurazione del proxy) per gli utenti fittizi (cioè, non capiscono come configurare il loro sistema)? Esiste un modo suggerito per effettuare connessioni HTTP senza la necessità di occuparsi del proxy? (cioè, un risolutore di connessione "super" che proverà tutte le possibili impostazioni proxy), o se c'è qualche metodo per dire a WinINET di abilitare tutte le sue impostazioni proxy per creare una connessione?
Francis, ho riscontrato questo problema.La soluzione semplice non esiste; ci sono troppe variabili e la macinazione attraverso gli scenari come Justin descrive è l'unico metodo infallibile. Ancora peggio, questo è tutto solo per Internet Explorer - con la crescente quota di mercato di Firefox, i metodi per ottenere le impostazioni proxy di Firefox dovrebbero essere aggiunti per un elenco completo. –
@ J.J. - Buon punto. Ho pensato al caso firefox quando ho originariamente scritto la risposta e stavo tornando per aggiungere un passaggio su Firefox. I tuoi commenti mi hanno ricordato di farlo! Vedere il nuovo passaggio n. 4 di seguito. :-) –
Peccato che non ci sia una soluzione semplice ... È anche interessante il fatto che non ci sia anche una biblioteca che avvolge tutte queste cose dolorose. Ho provato libcurl e libproxy, ma in effetti stanno lavorando a modo loro e non funzionano come IE. – Francis