3 Stimmen

Cookies in Java-Code akzeptieren?

Ich befasse mich mit einem HTTP-Sockets-Projekt, ich habe 2 HTTP-GET-Anforderungen von meinem Java-Code wie folgt zu senden:

  • Anfrage 1 : Seite X aufrufen
  • Seite X setzt ein Cookie.
  • Anfrage 2 : Aufruf der Seite Y

Wie Sie sehen, muss für den Zugriff auf den Inhalt der Seite Y ein Cookie vorhanden sein...

Wie kann ich ein Cookie aus Java-Code akzeptieren?

Hier ist ein Beispiel für eine gesendete Anfrage:

      String sServer = "example.com";
          InetAddress inaddr = null;

          try {
              inaddr = InetAddress.getByName(sServer);
      }
      catch (UnknownHostException ex) { //The host could not be resolved.
              System.out.println(ex);
              System.out.println("Error resolving hostname for '" + sServer + "'.\n");

      }
      Socket sock = null;
      try {
              sock = new Socket(inaddr, 80);
      }
      catch (IOException ex) {
          System.out.println(ex);
          System.out.println("Could not create the socket.\n");

      }

try {
java.io.OutputStream os = sock.getOutputStream();
 String sPacket = "GET /xxx/xxx/xxx.do HTTP/1.1\n"                                                              + "Host: example.com\n"
+ "Connection: keep-alive\n"                                                    + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5\n"
+ "Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8\n\n";

              os.write(sPacket.getBytes(), 0, sPacket.length());

              //Let's get the answer.
              System.out.print("The server (" + sServer + ") answered: '");
              java.io.InputStream is = sock.getInputStream();
              byte[] buf = new byte[1024];
              is.read(buf, 0, buf.length);
              for (int i = 0; i < buf.length; i++) {
                      if (buf[i] == 0) break;
                      else
                          System.out.print(new Character((char)buf[i]));
              }
              System. out.print("'\n");

      }
      catch (Exception ex) {
          System.out.println(ex);

      }

1voto

Brian Agnew Punkte 260470

Ich würde stark empfehlen die Verwendung HttpClient oder eine andere Bibliothek, die sich mit der HTTP-Verarbeitung befasst, anstatt zu versuchen, das Protokoll selbst zu implementieren/interpretieren. Siehe aquí für die Behandlung von Cookies mit HttpClient.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X