tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Artorius
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
749
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    xrax xrax ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Beiträge
    133
    Hallo zuammen,

    ich möchte an die URL einen langen String anhängen und per POST versenden.

    Ab einer bestimmten Länge des Strings erhalte ich folgenden Fehler:

    Server returned HTTP response code: 414 for URL: http://www.domain.de/path/some.php?a...cc39fc01&daten[fromFile]=//URLencoded String

    "kurze" String funktionieren.

    Ich nutze folgenden Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    String protkoll="HTTP"
    String urladd="http://www.domain.de"
    String urlPath="/path/some.php"
    String queryString="aaa=703a39ff23c5d028e4c48275cc39fc01&daten[fromFile]=//URLencoded String"
     
    url=new URL(protkoll,urladd,urlPath+"?"+queryString);
    httpCon = (HttpURLConnection) (url).openConnection();
    httpCon.setRequestMethod("POST");
    httpCon.setDoOutput(true);
     
    File f=new File(filename);
    FileInputStream fis=new FileInputStream(filename);
                        
      DataOutputStream os = new DataOutputStream(httpCon.getOutputStream());
                        
      byte[] buffer = new byte[4096];
      int bytes_read; 
       while((bytes_read = fis.read(buffer)) != -1) {
               os.write(buffer, 0, bytes_read);
         }
       os.close();
       fis.close();
    Der code 414 weist auf eine zu große Länge hin, aber bei POST ist doch die Länge unbegrenzt. Oder?

    Muss ich noch irdenwas setzte? Oder wo liegt mein Fehler?

    Besten Dank
    xrax
     

  2. #2
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    Hi!
    Dein Fehler liegt in der Tatsache, dass du immer noch einen GET- Request machst. Denn im Gegensatz zum GET werden beim POST die Parameter NICHT über die URL mitgesendet.
    Hier scheint es ein funktionierende Beispiel zu geben: http://www.xyzws.com/Javafaq/how-to-...web-server/139

    *grüssle*
     
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.
    (Johann Wolfgang von Goethe)
    ----------------------------------------------------------------------
    FLEXibler Java Entwickler

  3. #3
    xrax xrax ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Beiträge
    133
    Zitat Zitat von Artorius Beitrag anzeigen
    Hi!
    Dein Fehler liegt in der Tatsache, dass du immer noch einen GET- Request machst. Denn im Gegensatz zum GET werden beim POST die Parameter NICHT über die URL mitgesendet.
    Hier scheint es ein funktionierende Beispiel zu geben: http://www.xyzws.com/Javafaq/how-to-...web-server/139

    *grüssle*
    Hm,- aber ich setzte doch
    Code :
    1
    
    httpCon.setRequestMethod("POST");
    Danke für das Beispiel, werde ich mir gleich mal anschauen.
     

  4. #4
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    Ja, aber wie ich schon sagte, fügst du hier
    Zitat Zitat von xrax Beitrag anzeigen
    Code :
    1
    2
    3
    
    String queryString="aaa=703a39ff23c5d028e4c48275cc39fc01&daten[fromFile]=//URLencoded String"
     
    url=new URL(protkoll,urladd,urlPath+"?"+queryString);
    deinen QueryString dennoch an die URL an. Und das ist kein POST, sondern ein GET-Request. Dadurch wird deine URL zu lang und es gibt einen Fehler.
    Bei einem Post werden die Parameter im Inhalt des Request übertragen.

    *grüssle*
     
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.
    (Johann Wolfgang von Goethe)
    ----------------------------------------------------------------------
    FLEXibler Java Entwickler

  5. #5
    xrax xrax ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Beiträge
    133
    Zitat Zitat von Artorius Beitrag anzeigen
    Ja, aber wie ich schon sagte, fügst du hier

    deinen QueryString dennoch an die URL an. Und das ist kein POST, sondern ein GET-Request. Dadurch wird deine URL zu lang und es gibt einen Fehler.
    Bei einem Post werden die Parameter im Inhalt des Request übertragen.

    *grüssle*
    Ok klar, die Daten werden im Header und nicht in der Query übermittelt.
    Kam ziemlich durcheinander weil ich eine Bsp.Implementaion in php hatte.
    Da wirds so gemacht: (Habs aber nicht geprüft obs funktioniert.)

    Code :
    1
    2
    3
    4
    5
    
    $strHttpsUrl = $strHostname.'/path/some.php?aaa=703a.....&daten[fromFile]='.urlencode($StringToSend);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $strHttpsUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $strResponse = curl_exec($ch);
    Mein Code läuft leider immer noch nicht. Keines der Beispiele die ich Fand. Im Grunde will ich ja nur , wie im HTML (<form action="http......... enctype="multipart/form-data" method="post">) über den Browser ein File versenden. Nur halt ebend per JAVA.

    Besten Dank
    xrax
     

  6. #6
    Avatar von Artorius
    Artorius Artorius ist offline Mitglied Plutonium
    Registriert seit
    Feb 2010
    Beiträge
    222
    Na dann zeig doch mal, was du mittlerweile hast. Es sollte sich ja doch nun ein bisschen was an deinem Code getan haben...

    Edit: Du kannst auch mal hier nachschauen: http://hc.apache.org/httpclient-3.x/. Von Apache gibts nämlich auch einen HTTPClient, der dir sicher auch weiterhelfen kann...

    *grüssle*
    Geändert von Artorius (26.05.10 um 08:51 Uhr)
    xrax bedankt sich. 
    Wenn du eine weise Antwort verlangst, musst du vernünftig fragen.
    (Johann Wolfgang von Goethe)
    ----------------------------------------------------------------------
    FLEXibler Java Entwickler

  7. #7
    xrax xrax ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Beiträge
    133
    Zitat Zitat von Artorius Beitrag anzeigen
    Na dann zeig doch mal, was du mittlerweile hast. Es sollte sich ja doch nun ein bisschen was an deinem Code getan haben...
    Danke für das Angebot. Aber der Code ist mittlerweile das reine Chaos.

    Zitat Zitat von Artorius Beitrag anzeigen
    Edit: Du kannst auch mal hier nachschauen: http://hc.apache.org/httpclient-3.x/. Von Apache gibts nämlich auch einen HTTPClient, der dir sicher auch weiterhelfen kann...
    Genau, das hab ich gestern auch noch gefunden. Nachdem ich alle jars zusammen hatte, konnte ich direkt den Bsp.Code nutzen. Die ersten Tests liefen erfolgreich und ich bin fast am Ziel...

    Besten Dank !
    Gruß xrax

    *grüssle*
     

Ähnliche Themen

  1. HttpUrlConnection
    Von DoppelD im Forum Java Grundlagen
    Antworten: 5
    Letzter Beitrag: 12.11.10, 15:54
  2. HttpURLConnection - reusing Inputstream
    Von yigiter im Forum Java
    Antworten: 1
    Letzter Beitrag: 29.04.09, 22:25
  3. HTML Code mit POST übertragen
    Von NiciB im Forum PHP
    Antworten: 2
    Letzter Beitrag: 14.05.07, 11:06
  4. Client IP festlegen bei HttpURLConnection
    Von Mindwinder im Forum Java
    Antworten: 7
    Letzter Beitrag: 01.12.06, 00:11
  5. Antworten: 1
    Letzter Beitrag: 12.10.04, 12:05