Probleme bei Proxy-Server!

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi @ all!

Schreib schon den ganzen Tag an diesem Proxy-Server rum aber es will einfach nicht funktionieren.

Das Ziel: Mit meinem Browser schicke ich GET-Anfragen an den Proxy-Server. Der macht eine Url auf und öffnet einen Stream zur Url und schreibt den Inhalt an den Client zurück.
Der Proxy-Server soll natürlich mehrere Clients gleichzeitig parallel bedienen können, deswegen wird bei jedem neuen Client ein neuer Thread der unteren Klasse erzeugt mit einem eigenen Socket. Die Klasse, die das macht hab ich hier weggelassen.

Problem: In der Zeile DataInputStream inFromUrl = new DataInputStream(url.openStream()); bekomme ich manchmal folgenden Exception:

java.io.FileNotFoundException: http://www.orf.at/orfon/transparentpixen_a.jpg ALT=
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:787)
at aufg41.ProxyThread.run(ProxyThread.java:58)


Warum das? Hab in den docs gelesen, dass man immer den absoluten Pfad (Url + File) übergeben kann.
-----
Ganze Teile der Homepage und vor allem Bilder werden ganz oder gar nicht dargestellt.
z.B.: www.orf.at

orf.jpg




----

Sorry das der Code so lang ist, aber ich hab bei den kritischen Bereichen, wo ich glaub das der Fehler liegt, Kommentare in Großschrift daneben. So sinds nur ein paar Zeilen Code. Bitte schaut mal kurz drüber.



Code:
package aufg41;

/**
 * 

Überschrift: Proxy-Thread</p>
 * 

Beschreibung:
 * for each inquiring client one Proxy-Thread will be started
 * to handle requests of this client</p>
 * @version 1.0
 */

import java.net.*;
import java.io.*;
import java.util.StringTokenizer;

public class ProxyThread extends Thread {

  private int id;
  private Socket socket;


  /**
   * @param threadId int
   * @param socketForClient Socket: the socket for this and only this client!
   */
  public ProxyThread(int threadId, Socket socketForClient) {
    id = threadId;
    socket = socketForClient;
  } // constructor()

  //******************************************

  public void run() {
    System.err.println(this + " is running!");

    String request;
    String[] tokens;
    boolean rightCommand;
    BufferedReader inFromClient;
    DataOutputStream outToClient;

    try {
      inFromClient = new BufferedReader(new InputStreamReader(socket.
          getInputStream()));
      outToClient = new DataOutputStream(socket.getOutputStream());

      request = inFromClient.readLine(); //read 1.line from client
      System.out.println(this + " read line from client: " + request);
      tokens = splitCommand(request); //split the 1.line into its parts

      rightCommand = checkCommand(tokens);

      if (rightCommand) {

        //create and open stream to Url: token[1] = Url
        URL url = new URL(tokens[1]);
        DataInputStream inFromUrl = new DataInputStream(url.openStream());       //HIER BEKOMM ICH MANCHMAL DIE EXCEPTION

        forward( inFromUrl , outToClient );                              //FORWARD-METHODE WEITER UNTEN
      } // if(rightCommand)
      else {
        System.err.println("WRONG COMMAND");
      }

      System.out.println(this + " send content to client!");

      inFromClient.close();                                                       //HIER CLOSE ICH ALLES; 
      outToClient.close();                                                        //GLAUBE NICHT DAS HIER DATEN VERLOREN GEHEN
      socket.close();                                                               //KÖNNEN ODER?
    }
    catch (IOException ex) {
      System.err.println(ex);
      ex.printStackTrace();
    }

    System.err.println(this + " is shutdown!");
  } // run()


 /**
  * splits the command up in part-strings by delimiter " "
  * @param command String: the command to split
  * @return String[]: the part-strings
  * tokens[0]: Command
  * tokens[1]: Url
  * tokens[2]: HTTP-Version
  */
 private String[] splitCommand(String command) {
   StringTokenizer tokenizedString = new StringTokenizer(command);
   String[] tokens = new String[tokenizedString.countTokens()];

   for (int i = 0; i < tokens.length; i++) {
     tokens[i] = tokenizedString.nextToken();
   }

   return tokens;
 } // splitCommand()


  /**
   * checks if the Command equals "GET"
   * @param tokens String[]
   * @return boolean
   */
  private boolean checkCommand(String[] tokens) {
    if(tokens[0].equals("GET"))
      return true;
    else
      return false;
  } // checkCommand()


    //IST DAS OK???? ICH ÜBERGEBE DEN INPUTSTREAM VON DER URL UND OUTPUTSTREAM ZUM SOCKET VOM CLIENT
  private void forward(DataInputStream in, DataOutputStream out) {
    byte[] bytes = new byte[1024];

    try {
      while ( in.read(bytes) > 0 ) {          //HIER LES ICH JEWEILS 1024 BYTES UND SCHREIB SIE IN DEN      
        out.write(bytes);                        //OUTPUTSTREAM; DAMIT BEI BILDÜBERTRAGUNG AUCH OK IST
      }
    }
    catch (IOException ex) {
      System.err.println(ex);
      ex.printStackTrace();
    }
  } // forward()


  /**
   * overwritten toString-Method
   * @return String: ProxyThread + id
   */
  public String toString() {
    return "ProxyThread-" + id;
  } // toString()

} // class ProxyThread
 
G

Guest

Gast
Nein, glaub nicht das es dast ist.


Der Browser schick folgende HTTP-Anfrage

ProxyThread-19 read line from client: GET http://www.orf.at/orfon/transparentpixen_a.jpg ALT= HTTP/1.0


java.io.FileNotFoundException: http://www.orf.at/orfon/transparentpixen_a.jpg ALT=

java.io.FileNotFoundException: http://www.orf.at/orfon/transparentpixen_a.jpg ALT=

at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:787)

at aufg41.ProxyThread.run(ProxyThread.java:56)


----

Die übergebene Url und die Exception-Url sind gleich
 
G

Guest

Gast
becstift hat gesagt.:
ruf doch mal die url auf, die gibts nicht. ist doch klar, das da ne FileNotFoundException kommt!?!

Hab jetzt einmal Strings anstelle von bytes gschrieben. Die Exceptions kommen nicht mehr, dafür findet er manche Seiten überhaupt nicht oder wiederum nur fehlerhaft.

Code:
   Printwriter outToClient = new PrintWriter(socket.getOutputStream());

    ...
    ...
    ...

   URL url = new URL(urlString);
   URLConnection urlCon = url.openConnection();
   BufferedReader inFromUrl = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));  

   forward( inFromUrl , outToClient );

    ...
    ...
    ...

  private void forward(BufferedReader in, PrintWriter out) {
    String line;

    try {
      while ( (line = in.readLine()) != null ) {
        out.println(line);
      }
    }
    catch (IOException ex) {
      System.err.println(ex);
      ex.printStackTrace();
    }
  } // forward()
 
N

nxthor

Gast
Ich vermute das das System klappt, aber der Link einfach nur fehlerhaft ist, da eine tag-angabe aus dem html in den link zur datei gerutscht ist.
wohl falsches " gesetzt, oder falsch geparst?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
G Probleme mit SecruityManager + RMI Netzwerkprogrammierung 10
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2
Dann07 Proxy funktioniert nicht so wie gewünscht! Netzwerkprogrammierung 18
T Proxy mit Zusatzfunktion Netzwerkprogrammierung 1
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
M Proxy und HTTPS Netzwerkprogrammierung 3
C Proxy Server - Antwort auf welchem Port Netzwerkprogrammierung 1
M Socket 2x Proxy multithread-server mit Cross Verbindung Netzwerkprogrammierung 0
N Proxy gibt keine Antwort zurück Netzwerkprogrammierung 5
M HTTP Reverse Proxy mit dynamischen Servern? Netzwerkprogrammierung 7
L Proxy für Dateidownload? Netzwerkprogrammierung 3
M Proxy Einstellungen auslesen Netzwerkprogrammierung 2
T Socket Java HTTP-Proxy Netzwerkprogrammierung 3
J HTTP Proxy nutzen Netzwerkprogrammierung 4
B Einfacher Proxy Server Netzwerkprogrammierung 29
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
S Proxy Authentifizierung HtmlUnit Netzwerkprogrammierung 8
S Proxy Authentifizierung Netzwerkprogrammierung 3
G Java Client Proxy Skript Netzwerkprogrammierung 3
Dit_ UDP Verbindung durch Proxy Netzwerkprogrammierung 4
P Proxy für Anwendung setzten Netzwerkprogrammierung 3
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
trash HTTP Internet Connection bei Proxy ?! Netzwerkprogrammierung 3
L Einfacher Proxy-Server Netzwerkprogrammierung 6
M FTP-Connection über FTP-Proxy Netzwerkprogrammierung 20
M HttpURLConnection und Proxy Netzwerkprogrammierung 2
M Verbindung über Proxy// Problem mit Outputstream bei URLConn Netzwerkprogrammierung 5
alexpetri simpler Proxy geht nicht Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben