POSTING zu HTTPS in Java, seltsames Verhalten

8

Ich habe beschlossen, ein paar Sachen mit Java zu veröffentlichen, bin aber bei einer so scheinbar trivialen Aufgabe stecken geblieben. Dann wurde ich frustriert und schrieb die ganze Sache in PHP um, und es funktioniert einwandfrei. Ich habe versucht, die Ausgaben von Java und PHP-Ergebnissen zu vergleichen, und was ich merke, dass Curl Content-Type: multipart / form-data; setzt, während Java (richtig?) Es auf application / setzt x-www-form-urlencoded; Dies löst jedoch einen 500 internen Serverfehler aus. Was zur Hölle ist los?

Java debug:

%Vor%

Java-Code:

%Vor%

PHP:

%Vor%

Curl-Optionen:

%Vor%     
bah 11.12.2017, 18:39
quelle

2 Antworten

5

Wenn Ihr Server Content-Type: multipart/form-data erwartet, sollten Sie MultipartEntityBuilder anstelle von UrlEncodedFormEntity verwenden.

Ihr Entity-Code könnte etwas wie

sein %Vor%

Weitere Informationen finden Sie unter diesem Link. Apache HttpClient, der mehrteilige Form post

macht

Update - Noch ein Punkt.

Ihr Cookie-Header sieht im Java-Fall nicht korrekt aus. Die Cookie-Paare sollten durch ein Semikolon und ein Leerzeichen ( '; ' ) getrennt sein. Leerzeichen fehlt in Ihrem Java-Fall. Ref - Ссылка

    
vsoni 15.12.2017 07:03
quelle
2

curl kann jede der beiden Kodierungen benutzen, genau wie php oder java, es ist einfach eine Frage des korrekten Typs der Anfrage.

urlencoded ist altmodisch multipart ist das neue Kind auf dem Block, muss Java in der Lage sein, beide zu erzeugen, möglicherweise ein neues Java-Beispiel suchend?

Versuchen Sie auch, die eigentliche Anforderung selbst zu erstellen und die tatsächlichen Bytes zu senden, die Sie senden müssen, indem Sie die Anforderung selbst Byte für Byte erstellen. halte es für eine Lernübung.

Um zu debuggen, warum der Server 500 Fehler sendet, empfehle ich Ihnen, den Quellcode Ihres Servers zu lesen und auch die Logs Ihres Servers zu lesen, es mag nur die neue Art, Dinge zu tun, zu mögen.

BTW Ich mag die alte Art, ich mag das Einfache. Früher war es einfach, eine POST-Anfrage, damals ... jetzt, der neue Weg, fühlt sich verschwenderisch, zu viele Bytes, zu wenige Daten.

    
Felipe Valdes 15.12.2017 05:07
quelle

Tags und Links