Code 414 bei HttpURLConnection POST

xrax

Erfahrenes Mitglied
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?aaa=703a39ff23c5d028e4c48275cc39fc01&daten[fromFile]=//URLencoded String

"kurze" String funktionieren.

Ich nutze folgenden Code:
Code:
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
 
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-use-httpurlconnection-post-data-to-web-server/139

*grüssle*

Hm,- aber ich setzte doch
Code:
httpCon.setRequestMethod("POST");
Danke für das Beispiel, werde ich mir gleich mal anschauen.
 
Ja, aber wie ich schon sagte, fügst du hier
Code:
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*
 
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:
$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
 
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*
 
Zuletzt bearbeitet:
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.:D

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*
 

Neue Beiträge

Zurück