Die Informationen verwenden, die in XMLHttpRequest.send(string)
Ich bin das senden einer POST-Anfrage mit einem string in der .send()
Teil "id=jeff&command=test"
.
Wie kann ich analysieren, und verwenden Sie diese Werte in Java über die HttpServletRequest
Objekt?
Ich habe versucht, die änderung der content-type text/html
und application/x-www-form-urlencoded
.
Meine java-server embedded jetty btw.
var text = form.command.value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
xmlhttp.responseText
}
}
xmlhttp.open("POST", 'go', true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("id=jeff&command=" + text);
hier mein Java-code
public class GoHandler extends HttpServlet
{
Commands c = Commands.getInstance();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException
{
BufferedReader reader = request.getReader();
String str = "";
while ((str = reader.readLine()) != null)
{
System.out.println(str);
}
String p = request.getParameter("id");
String input = request.getParameter("command");
System.out.print(p);
hier ist meine Ausgabe, wenn ich die Anfrage von einem browser
id=jeff&command=test (dies ist aus der buffered reader)
null (das ist von meinem String p der sollte die id)
hier ist Chrome ' s toolkit Ding..
Request URL:http://localhost:8080/go
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:20
Content-Type:application/xml
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
Request Payload
id=jeff&command=test
Response Headersview source
Content-Length:66
Content-Type:application/json;charset=utf-8
Server:Jetty(8.1.7.v20120910)
meiner Antwort vom server
{"flavor":"You are in the goHandler"}
Zeigen Sie Ihre Ajax-Aufruf, so dass wir sicherstellen können, dass die Anfrage korrekt eingerichtet ist.
Auf der server-Seite, was bedeutet
String p = request.getParameter("id"); System.aus.print(p); dieser Druck null
Warum nutzen Sie nicht-standard-JavaScript-Bibliotheken wie jQuery?! 🙂 Diese ein bisschen Probleme sind Häufig in nativen JS und die frameworks bieten eine einfache Möglichkeit, diese Adresse auch die cross-browser-Probleme. Sagen wir, die oben genannten JS-code funktioniert nicht in alten IE-Browsern (bcoz XMLHttpRequest ist es nicht).
Mein Problem ist nicht mit javascript sein mit dem server abrufen der Eigenschaften die Art und Weise sein soll (mit getPeoperty(string) ) die post-Anfragen gesendet von android-code in das Ende, so javascript und Browsern kein Problem sein. Ich bin nur verwenden, um den test-server anfordert.
Auf der server-Seite, was bedeutet
httpServletRequest.getParameter("id")
zurück?String p = request.getParameter("id"); System.aus.print(p); dieser Druck null
Warum nutzen Sie nicht-standard-JavaScript-Bibliotheken wie jQuery?! 🙂 Diese ein bisschen Probleme sind Häufig in nativen JS und die frameworks bieten eine einfache Möglichkeit, diese Adresse auch die cross-browser-Probleme. Sagen wir, die oben genannten JS-code funktioniert nicht in alten IE-Browsern (bcoz XMLHttpRequest ist es nicht).
Mein Problem ist nicht mit javascript sein mit dem server abrufen der Eigenschaften die Art und Weise sein soll (mit getPeoperty(string) ) die post-Anfragen gesendet von android-code in das Ende, so javascript und Browsern kein Problem sein. Ich bin nur verwenden, um den test-server anfordert.
InformationsquelleAutor Jeff Engebretsen | 2012-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es als buffered reader. Dies wird mit dem vollen string. Die Sie analysieren können es manuell. Wenn Ihr separator "\n" dann,
Edit:
Können Sie versuchen, einen/beide dieser http-Header?! Hier ist die aktualisierte code.
Mit alsterrunde() zum umwandeln der URI in den gültigen ASCII.
Aktualisiert, JavsScript da der Standard content-type "application/x-www-form-urlencoded" so entfernt. Versuchen Sie nun, um Zugriff auf alle Ihre Parameter in der servlet.
Nur aktualisiert der gleiche code. Nur einen Versuch geben, dass man mit.
Ich habe den code auf meine Anfrage. Meine Ausgabe hat sich nicht geändert, obwohl.
Chrome debug-tools jetzt sagt, dass es die form von Daten, aber in meinem Programm meine strings sind immer noch null
Aktualisiert die obige Antwort. Pls überprüfen.
InformationsquelleAutor devsathish
", Das funktioniert. Aber gibt es keine eingebaute Möglichkeit, sich diese Werte?"
Don ' T read input-stream, um get-parameter, denn sobald Sie die lese-Eingabe-stream erreicht man dann am Ende des input-Streams und native Methode
getParameter()
nicht zurückgesetzt werden input-stream, die ist, warum es null zurück.verwenden
getParameter()
direkt um Werte.Entweder
InputStream
odergetParameter()
verwenden Sie nicht beideInformationsquelleAutor Vijay Vishwakarma