1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Sonderbarer "Bogus chunk size"-Fehler

  • RolandU
  • 2. Oktober 2007 um 23:34
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • RolandU
    Punkte
    953
    Beiträge
    174
    • 2. Oktober 2007 um 23:34
    • #1

    Hallo!

    Ich versuche eine Datei über eine https-Verbindung mit Java zu übertragen, erhalte jedoch eine Fehlermeldung, die ich nicht verstehe.

    Der Fehler passiert nicht auf jedem Computer, ich habe noch nicht herausgefunden, ob es an Java-Versionen, der Verbindung oder anderen Eigenschaften liegt.

    Hoffe, dass hier jemand eine Lösung weiß - Besten Dank im Voraus!

    Das Programm (Ausschnitt) ***********

    Code
    /* Configure the connection using POST, not putting sensitive data 
     * into the address-line */
    URL url = new URL(reqp);
    
    HttpsURLConnection socket = (HttpsURLConnection) url.openConnection();
    socket.setRequestMethod("POST");
    socket.setDoOutput(true);
    socket.setDoInput(true);
    socket.connect();
    
    
    /* Defining the Request 
     * Please Note that the RequestMethod, Content-Length and 
     * Content-Type should be declared using socket.setRequestProperty,
     * however this did not work properly. 
     */
    
    
    String req=
    
    
        "POST "+reqp+" HTTP/1.1\r\n"+
    
    
        "Content-Length: "+data.length()+"\r\n"+
    
    
        "Content-Type: application/x-www-form-urlencoded\r\n"+
    
    
        "\r\n"+
    
    
        data;
    
    
    
    /* Configuring the writer for writing TO THE CONNECTION */
    OutputStream out = socket.getOutputStream();
    out.write(req.getBytes("UTF-8"));
    
    
    
    
    /* Configuring the InputStream collecting the result-data*/
    InputStream in = socket.getInputStream();
    
    
    
    /* Write the response to a file */
    filename = intmsgnr+"RES.TXT";            
    FileOutputStream writer = new FileOutputStream(filename);
    
    byte[] buffer = new byte[1024];
    int numRead;
    long numWritten = 0;
    while ((numRead = in.read(buffer)) != -1) {
        writer.write(buffer, 0, numRead);
        numWritten += numRead;
    }
    Alles anzeigen


    Die Fehlermeldung *****************

    Code
    java.io.IOException: Bogus chunk size
            at sun.net.www.http.ChunkedInputStream.processRaw(Unknown Source) 
            at sun.net.www.http.ChunkedInputStream.readAheadBlocking(Unknown Source)
            at sun.net.www.http.ChunkedInputStream.readAhead(Unknown Source)
            at sun.net.www.http.ChunkedInputStream.read(Unknown Source) 
            at java.io.FilterInputStream.read(Unknown Source)
            at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
            at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read (Unknown Source)
            at edServerDialog.readWriteToFile(edServerDialog.java:419)


    Die Zeile in der der Fehler passiert, ist die Codezeile, die mit "while" beginnt - hat also etwas mit dem Empfangsteil zu tun. Es scheint auch nicht mit Größe von "buffer" zusammenzuhängen.

    Bin für jeden Tipp dankbar!

  • a9bejo
    Punkte
    4.697
    Beiträge
    913
    • 3. Oktober 2007 um 19:13
    • #2

    Wenn ich mir diesen Thread anschaue, dann koennte der Fehler daher ruehren, dass die angegebene content-length im Header nicht mir dem tatsaechlichen Inhalt des Dokuments uebereinstimmen. Beim Auslesen verlaesst sich der Inputstream auf die Angabe im HTTP Header.

    Versuch vielleicht mal:

    Code
    ...
    "Content-Length: " + data.getBytes("UTF-8").length + "\r\n" +
    ...

    Die Vermutung ist das, wenn Du 'data' in ein UTF-8 byte array kodierst, die Laenge nicht mehr mit deiner Angabe im Header uebereinstimmt. Strings sind ja in Java als 2 Byte UTF-16 kodiert.

  • RolandU
    Punkte
    953
    Beiträge
    174
    • 3. Oktober 2007 um 21:19
    • #3
    Zitat von a9bejo

    Die Vermutung ist das, wenn Du 'data' in ein UTF-8 byte array kodierst, die Laenge nicht mehr mit deiner Angabe im Header uebereinstimmt. Strings sind ja in Java als 2 Byte UTF-16 kodiert.

    Danke für den Tipp! Doch die Bogus-Chunk-Size tritt ja beim Lesen der Antwort im InputStream auf und nicht bei der Anfrage - kann das überhaupt zusammenhängen?

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum