Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/07/2016, 19:03
Avatar de Once
Once
 
Fecha de Ingreso: enero-2016
Mensajes: 8
Antigüedad: 8 años, 3 meses
Puntos: 0
Peticion HTTP a web

Hola,

Estoy intentando realizar una conexión con una web usando el protocolo HTTP y sockets, pero el servidor me devuelve un error 400 Bad Request y no sé qué estoy haciendo mal.

Código Java:
Ver original
  1. import java.io.DataOutputStream;
  2. import java.io.DataInputStream;
  3. import java.io.IOException;
  4. import java.net.Socket;
  5. import java.net.UnknownHostException;
  6.  
  7. public class Enviar {
  8.     private String host;
  9.     private int port;
  10.     private String peticion;
  11.     private Socket web;
  12.     private DataInputStream entrada;
  13.     private DataOutputStream salida;
  14.    
  15.     public Enviar(String host, int port, String peticion) {
  16.         this.host = host;
  17.         this.port = port;
  18.         this.peticion = peticion;
  19.     }
  20.    
  21.     public String enviar() {
  22.         String data;
  23.         String buffer = "";
  24.         try {
  25.         web = new Socket(host, port);
  26.         entrada = new DataInputStream(web.getInputStream());
  27.         salida = new DataOutputStream(web.getOutputStream());
  28.        
  29.         System.out.println("enviando: " + peticion);
  30.        
  31.         salida.writeChars(peticion);
  32.         salida.flush();
  33.         do {
  34.             data = entrada.readLine();
  35.             buffer += data + "\n";
  36.         } while(!buffer.endsWith("\n\n"));
  37.         System.out.println("Recibido del servidor: " + buffer);
  38.         return buffer;
  39.        
  40.        
  41.         } catch (UnknownHostException e) {
  42.             System.err.println("No se encontro el host");
  43.             e.printStackTrace();
  44.         } catch (IOException e) {
  45.             System.err.println("Error entrada salida");
  46.             e.printStackTrace();
  47.         }
  48.         return "";
  49.     }
  50. }

El constructor de la clase recibe como parametros el host, el puerto y un string con la petición completa que quiero realizar, sé que está bien la petición porque estoy probando con una peticion capturada con HTTPLiveHeaders justo para evitar este tipo de errores.

Estoy aprendiendo Java y agradecería cualquier ayuda.

Saludos y gracias de antemano.