- Forum-Beiträge: 67
13.01.2015, 23:15:50 via Website
13.01.2015 23:15:50 via Website
Hallo Leute,
Ich sitze gerade daran in einer App Nachrichten über GCM zu versenden. Habe nach diesem Tutorial:
gearbeitet. Alles funktioniert ganz wunderbar. Ich kann von meinem Browser über der Server Nachrichten an alle registrierten Devices senden.
Nun möchte ich aber aus der App heraus eine Nachricht senden.
Dafür habe ich die php-Datei send_message.php, welcher ich 'regId' und 'message_ übergebe.
Habe auch das im Browser probiert: es geht.
In dem Java Code gibt es in der KLasse ServerUtilities.java die Methode post(). Diese habe ich pubilc gemacht
und rufe sie nun so auf:
but_send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new PostDataAsyncTask().execute();
}
});
public class PostDataAsyncTask extends AsyncTask<String, String, String> {
protected void onPreExecute() {
super.onPreExecute();
// do stuff before posting data
}
@Override
protected String doInBackground(String... strings) {
try {
Map<String, String> params = new HashMap<String, String>();
params.put("regId", strRegId);
params.put("message", "Das ist eine Testnachricht");
ServerUtilities.post(postSendUrl, params);
} catch (NullPointerException e) {
e.printStackTrace();
Log.i("Error1", e.toString());
} catch (Exception e) {
e.printStackTrace();
Log.i("Error2", e.toString());
}
return null;
}
@Override
protected void onPostExecute(String lenghtOfFile) {
// do stuff after posting data
}
ich erhalte nach einger Zeit die Fehlermeldung:
Java.net.SocketException: revfrom failed: ETIMEDOUT (Connection timed out
Irgendwie komme ich hier nicht weiter
vielleicht habt Ihr einen Rat .
Danke und Gruß
HS
PS: hier noch die Methode post(
public static void post(String endpoint, Map<String, String> params)
throws IOException {
URL url;
try {
url = new URL(endpoint);
} catch (MalformedURLException e) {
throw new IllegalArgumentException("invalid url: " + endpoint);
}
StringBuilder bodyBuilder = new StringBuilder();
Iterator<Entry<String, String>> iterator = params.entrySet().iterator();
// constructs the POST body using the parameters
while (iterator.hasNext()) {
Entry<String, String> param = iterator.next();
bodyBuilder.append(param.getKey()).append('=')
.append(param.getValue());
if (iterator.hasNext()) {
bodyBuilder.append('&');
}
}
String body = bodyBuilder.toString();
Log.v(TAG, "Posting '" + body + "' to " + url);
byte[] bytes = body.getBytes();
HttpURLConnection conn = null;
try {
Log.e("URL", "> " + url);
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setFixedLengthStreamingMode(bytes.length);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-8");
// post the request
OutputStream out = conn.getOutputStream();
out.write(bytes);
out.close();
// handle the response
int status = conn.getResponseCode();
if (status != 200) {
throw new IOException("Post failed with error code " + status);
}
} finally {
if (conn != null) {
conn.disconnect();
}
}
}
Danke
— geändert am 13.01.2015, 23:21:32
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.