Ich habe ein Problem mit HTTP-URL-Verbindungen, die keine Daten zurückgeben. Der Code, den ich benutze, ist unten ... Es ist im Grunde ein Messaging-Client, und diese Methode erhält alle Nachrichten an einen gefälschten Benutzer (Bot) geschickt und dann bin ich in der Lage, die Nachrichten zu manipulieren, nach Schlüsselwörtern suchen und reagieren von der Bot.HttpURLConnection POST-Anforderung gibt keinen Wert zurück
public void getMessages(String bot)
{
xml = "" +
"xmlMessage=<message type=\"comet.get.message.updates\" "
+ "id=\"" + bot + "\" "
+ "password=\"" + password + "\" />";
// Replace spaces (partial url encode).
xml = xml.replace(" ", "%20");
String serverResponse = "";
try
{
// Build URL
url = new URL(botUrl);
request = (HttpURLConnection)url.openConnection();
// Set the Request Method.
request.setRequestMethod("POST");
request.setDoInput(true);
request.setDoOutput(true);
request.setUseCaches(false);
request.setAllowUserInteraction(false);
request.setRequestProperty("Content-type", "text/xml; charset=" + "UTF-8");
out = request.getOutputStream();
writer = new OutputStreamWriter(out, "UTF-8");
writer.write(xml);
writer.close();
String temp = "";
buff = new BufferedReader (new InputStreamReader (request.getInputStream()));
while ((temp = buff.readLine()) != null)
{
serverResponse = serverResponse + temp;
}
// XML RESPONSE EXAMPLE
// xml = "- <message type=\"comet.message.updates\" id=\"[email protected]\" count=\"2\">z" +
// "- <contact id=\"jy5740\" />" +
// "<statement text=\"test\" from=\"jy5740\" />" +
// "<statement text=\"testing 123\" from=\"jy5740\" />" +
// "</contact>" +
// "</message>";
}
catch (MalformedURLException ex)
{
System.out.println("Bad URL: " + ex);
}
catch (IOException ex)
{
System.out.println("Connection error: " + ex);
}
// do stuff with the serverResponse string
Die Methode funktioniert einwandfrei, wenn Nachrichten vorliegen, die zum Zeitpunkt des Methodenaufrufs nicht empfangen wurden. Das Problem ist, wenn seit der letzten Überprüfung keine Nachrichten mehr vorhanden sind. Die Methode bleibt einfach in der while-Schleife, bis eine Nachricht an den Bot gesendet wird, der meine App sperrt. Wie kann ich feststellen, ob der Server keine Antwort erhalten hat?
Ok, ich völlig übersehen, dass. Vielen Dank, dass Sie mich in die richtige Richtung weisen! – JustinY17