In Delphi, sto usando Indy TIdHTTPWebBrokerBridge
accoppiato con TIdHTTP
per inviare/ricevere dati via HTTP. Sul server non ho alcuna gestione elaborata, rispondo sempre con un semplice flusso di contenuti. In caso di problemi, restituisco solo le informazioni su tale problema nel contenuto della risposta (come l'autenticazione non riuscita, la richiesta non valida, ecc.). Quindi, dal punto di vista del cliente, posso presumere che ogni richiesta riuscita effettuata su questo server avrà sempre un codice di risposta di 200 (OK)?Ogni richiesta HTTP riuscita restituisce sempre il codice di stato 200?
Mi chiedo perché sul client, le richieste sono racchiuse all'interno di funzioni che restituiscono solo un valore booleano per il successo della richiesta.
All'interno di questa funzione:
IdHTTP.Get(SomeURL, AStream);
Result:= IdHTTP.ResponseCode = 200;
Questa funzione gestisce ogni e qualsiasi richiesta che potrebbe recuperare i dati. Se ci sono stati problemi nella richiesta, questa funzione dovrebbe restituire False. Nel mio scenario, dal momento che restituisco sempre una sorta di contenuto sul server, il client riceverà sempre un codice di risposta di 200 in questa funzione?
Immagino che la vera domanda sia, se restituisco sempre una sorta di contenuto e gestisco tutte le eccezioni sul server, allora il server restituirà sempre il codice di stato di 200 per ogni richiesta?
Accetto invece la tua risposta, poiché è diretta direttamente al mio scenario esatto piuttosto che agli standard HTTP generali. Le altre risposte, anche se sono molto vere, presuppongono che il server risponda a diverse risposte basate su standard, ma il mio server non è standard. In effetti, ho reso volutamente difficile lavorare con una misura di sicurezza. –
Inoltre sei una risorsa preziosa perché fai parte del team di Indy: D –