Rufen Sie POST-Daten von einem servlet auf einem anderen server
Bin ich Einreichen von JSON-Daten aus meiner GWT-Client und Übergeben es an meine GWT-Server. Und ich möchte zu re-senden von Daten auf einen anderen server und wollen die Antwort von einem anderen server zu GWT-Client.
Ich weiß einfach nicht, wie kann ich dies tun. Ich habe versucht, folgenden code aber nicht funktioniert.
Mein Code ist :
@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("POST");
StringBuffer jb = new StringBuffer();
URL oracle = new URL("http://www.google.com");
HttpURLConnection connection = null;
connection = (HttpURLConnection) oracle.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setDoInput(true);
request.getInputStream();
OutputStream wr = connection.getOutputStream();
InputStream in = request.getInputStream();
byte[] buffer = new byte[512];
int read = in.read(buffer, 0, buffer.length);
while (read >= 0) {
wr.write(buffer, 0, read);
read = in.read(buffer, 0, buffer.length);
}
wr.flush();
wr.close();
BufferedReader in1 = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String inputLine;
while ((inputLine = in1.readLine()) != null) {
jb.append(inputLine);
}
response.setContentType("text/html");
//Get the printwriter object from response to write the required json
//object to the output stream
PrintWriter out = response.getWriter();
//Assuming your json object is **jsonObject**, perform the following,
//it will return your json object
out.print(jb.toString());
out.flush();
in1.close();
}
Bitte helfen Sie mir.
- dies wäre ein guter Kandidat für HTML5 web sockets?
- Nein.. ich will nicht zu HTML5 web sockets, da es keine Unterstützung für IE6 🙁
- den Beruf wechseln, wenn die Menschen Kraft zur Unterstützung von IE6. Dies ist unmenschlich.
- Ich habe schlechte Erfahrungen mit GWT und IE6
- Ich würde auch empfehlen zu überlegen, async Antwort in diesem Fall (siehe stackoverflow.com/questions/12085235/...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie zum senden der Anforderung an den anderen server vor dem Lesen der Antwort
siehe auch Mit Hilfe von java.net.URLConnection Feuer und behandeln von HTTP-requests
postParameter
war ein copy und paste Fehler. Ich habe es entfernt.query
erzeugt aus den originalen post-Parameter. Für Einfachheit habe ich die Abfrage von nur zwei Parameter, die initialisiert werden mit den Parametern aus der origianal Anfrage. Im produktiven code, den Sie erzeugen query-String mit einer Schleife über alle Parameter, die innerhalb der parameterMapDarüber hinaus können Sie Apache httpclient, es ist sehr einfach zu implementieren Ihre Anforderung, wie :