1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Sonderbarer "Bogus chunk size"-Fehler

  • RolandU
  • 2. Oktober 2007 um 23:34
  • Unerledigt
  • RolandU
    10
    RolandU
    Mitglied
    Reaktionen
    3
    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!

    RolandU, Glühbirnen-Experte

  • a9bejo
    21
    a9bejo
    Mitglied
    Reaktionen
    42
    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.

    lg, Benjamin Ferrari, bookworm.at

  • RolandU
    10
    RolandU
    Mitglied
    Reaktionen
    3
    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?

    RolandU, Glühbirnen-Experte

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English