Zum ersten Mal Poster, tut mir leid, wenn etwas nicht richtig formatiert ist. Ich erstelle eine Android-App für die Schule, die Textnachrichten senden muss. Ich habe Twilio von mehreren Leuten empfohlen, also habe ich beschlossen, damit zu gehen. Nach diesem Tutorial: https://www.twilio.com/blog/2016/05/how-to-send-an-sms-from-android.html, mit meiner eigenen Android-App und die eine einschließlich Ich bekomme eine 404, wenn Post aufgerufen wird (durch Ngrok gesehen). Ich bin völlig verloren, noch neu für Android. Das Backend gibt die folgende Meldung durch intellij: 8810 [qtp649044888-15] INFO spark.http.matching.MatcherFilter - Die gewünschte Route [/] wurde in Funken nicht abgebildet für Accept: [null]Twilio sendet Texte auf Android-Probleme
Konto-IDs, Adressen, Telefonnummern usw. ersetzt mit Backend des x:
//Heroku assigns different port each time, hence reading it from process.
ProcessBuilder process = new ProcessBuilder();
Integer port;
if (process.environment().get("PORT") != null) {
port = Integer.parseInt(process.environment().get("PORT"));
} else {
port = 4567;
}
Spark.port(port);
get("/", (req, res) -> "Hello, World");
TwilioRestClient client = new TwilioRestClient.Builder(System.getenv("ACxxxxxxx72279fb226f0dd162c869ce1e"), System.getenv("xxxxxxxc324a89155b93b5af26393297")).build();
post("/sms", (req, res) -> {
String body = req.queryParams("Body");
String to = req.queryParams("To");
String from = System.getenv("216450xxxx");
Message message = new MessageCreator(
new PhoneNumber(to),
new PhoneNumber(from),
body).create(client);
return message.getSid();
});
App- post-Methode
Call post(String url, Callback callback) throws IOException {
RequestBody formBody = new FormBody.Builder().add("To", "609420xxxx").add("Body", "TEST").build();
Request request = new Request.Builder().url(url).post(formBody).build();
Call response = mClient.newCall(request);
response.enqueue(callback);
Log.d("CALL: ", response.toString()+ " " + callback.toString());
return response;
}
App post-Methode auf die Schaltfläche:
emailButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
post("http://xxxxxxxx.ngrok.io", new Callback(){
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),"SMS Sent!",Toast.LENGTH_SHORT).show();
}
});
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
});
Dies sollte ein Text an meine Nummer senden (verifiziert auf Twilio-Konto), aber ich bekomme nichts. Der Toast erscheint und sagt, dass der Text gesendet wurde.
Vielen Dank im Voraus für jede und alle Hilfe.
Große Antwort! Ich würde vorschlagen, dass der anfängliche Fehler (dass die Route '/' nicht zugeordnet wurde) auf die fehlenden '/ sms' auf der ngrok-URL zurückzuführen ist. Aber Sie haben auch das nächste Problem bemerkt, nämlich dass die Kontodetails fehlgeschlagen sind. – philnash
Vielen Dank, ja, die ganze Hardcoding-Sache war, weil wir eine strikte Deadline hatten und nur schlampig damit waren, es zum Laufen zu bringen. Die/sms war das Problem und neue TwilioRestClient.Builder (System.getenv ("ACxxxxxxx72279fb226f0dd162c869ce1e"), System.getenv ("xxxxxxxc324a89155b93b5af26393297") benötigt, um das System.getenv zu verlieren. Nochmals vielen Dank, funktioniert wie ein Charme. – lehmanj3
I ' Ich bin erfreut, zu hören, dass es jetzt funktioniert. Dein Versuch, ein paar Minuten zu sparen und zu sparen, hat dich 24 Stunden gekostet, als es schief ging. Ich denke, das ist eine der wichtigsten Lektionen in der Programmierung, und es ist gut, dass du es so früh gelernt hast in deiner Programmierkarriere! Am Ende ist der schnellste Weg immer der richtige Weg, auch wenn es zu der Zeit nicht so scheint. Viel Glück mit dem Rest deines Projektes! – miknik