Estoy usando idhttp (Indy) para hacer una verificación de sitios web. Todo lo que quiero es verificar el código de respuesta del servidor después de enviar mi solicitud, no quiero tener que recibir el resultado HTML del servidor, ya que solo estoy monitoreando un código 200 OK, cualquier otro código que significa que hay un problema de alguna forma.IdHttp Simplemente obtenga el código de respuesta
He buscado documentos de ayuda de idhttp y la única forma de hacerlo posible sería asignar el código a MemoryStream
y luego borrarlo directamente, sin embargo, eso no es muy eficiente y usa memoria eso no es necesario ¿Hay alguna manera de simplemente llamar a un sitio y obtener la respuesta, pero ignorar el HTML enviado de vuelta que es más eficiente y no desperdicia memoria?
Actualmente el código sería algo como esto. Sin embargo, este es solo un código de muestra que aún no he probado, solo lo uso para explicar lo que trato de hacer.
Procedure Button1Click(Sender: TObject);
var
http : TIdHttp;
s : TStream;
url : string;
code : integer;
begin
s := TStream.Create();
http := Tidhttp.create();
url := 'http://www.WEBSITE.com';
try
http.get(url,s);
code := http.ResponseCode;
ShowMessage(IntToStr(code));
finally
s.Free();
http.Free();
end;
acabo estado jugando con el código más. Todo esto se ejecuta dentro de un hilo, sin embargo, si hay algo más que una respuesta de 200 códigos, p. Ej. 404, 302 etc. o un error de socket hace que el hilo salga. – jskrwyk
Cualquier código de respuesta que no indique un retreive exitoso generará una excepción. Si su hilo no está manejando excepciones, o al menos no está manejando el tipo de excepción particular que realmente se genera, entonces sí, el hilo se cerrará (y se establecerá la propiedad 'TThread.FatalException'). En mi ejemplo, solo está manejando las excepciones 'EIdHTTPProtocolException'. Expanda su código de secuencia para manejar otros tipos de excepciones si es necesario. –
@RemyLebeau ¿Qué pasa si recibimos una respuesta 'Continuar' '100'? Tendremos que intentarlo de nuevo, ¿verdad? – PSyLoCKe