2017-12-18 5 views
0

Ich folgte diesem Google Cloud Funktion Tutorial - https://firebase.google.com/docs/functions/get-startedGoogle Cloud Funktionen + Android App

Und ich war in der Lage, die Funktion durch node.js auf meinem Mac läuft Sierra einzusetzen. Ich bin jetzt in der Lage, meinen addMessage HTTP-Endpunkt von einem Browser aus aufzurufen, und er fügt die Nachricht erfolgreich zu meiner Echtzeitdatenbank in der Firebase-Konsole hinzu.

Ich habe auch umgesetzt Google In meiner App-Zeichen gemäß diesem Tutorial: https://developers.google.com/identity/sign-in/android/start-integrating

Ich bin aber nicht in der Lage, die addMessage() Funktion von meinem Android-App über einen Standard-HTTP-Request aufrufen. Das ist mein Android-Code:

private Klasse HttpSenderTask erweitert AsyncTask {

String testString; 
    String content; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     testString = text.getText().toString(); 
    } 

    @Override 
    protected String doInBackground(String... strings) { 

     try{ 
      URL url = new URL("**myCloudFunctionlinkFromFirebaseConsole**/addMessage?text=" + testString); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setRequestMethod("POST"); 
      connection.setDoOutput(true); 
      connection.setConnectTimeout(5000); 
      connection.setReadTimeout(5000); 
      connection.connect(); 

      content = "Done"; 
     } 
     catch (Exception ex){ 
      Log.d(TAG, ex.toString()); 
     } 
     return content; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
    } 
} 

Was mache ich falsch?

Gibt es auch eine Dokumentation, die uns lehren kann, wie man Android-Code für die Nutzung von Cloud-Funktionen schreibt? Jede Hilfe in dieser Angelegenheit würde sehr geschätzt werden.

Vielen Dank an all

Antwort

0

Diese Linie wahrscheinlich ist, wo Sie falsch gehen:

URL url = new URL("myCloudFunctionlink/addMessage?text=" + testString); 

Sie müssen zum HTTPS-Endpunkt von Cloud-Funktionen ausgesetzt, um eine URL zur vollständigen URL erstellen. Sie können dies über die CLI abrufen, nachdem es Ihre Funktion bereitgestellt hat. Es bezieht Ihren Firebase-Projektnamen als Teil des Hostnamens in die URL ein.

Beachten Sie außerdem, dass alle Abfragezeichenfolgeparameter mit Escapezeichen versehen werden sollten, sofern Sie nicht sicher sind, dass sie für HTTP-Parameter sicher sind.

+0

Ich habe die URL verwendet, die ich von der Firebase-Konsole für meine Funktion addMessage erhalten habe. Es funktioniert erfolgreich, wenn es von einem Browser gestartet wird. Aber nicht von der Android-App. Ist die CLI-URL etwas anderes? – user3324792

+0

Nein. Bitte aktualisieren Sie, um den Fehler anzuzeigen, den Sie bekommen. Es ist nicht genug zu sagen, dass "es nicht funktioniert". –

+0

Ich bekomme keinen Fehler. Es gibt keine Antwort vom Server überhaupt. – user3324792

Verwandte Themen