2017-12-18 20 views
0

私はこのGoogleクラウド機能のチュートリアルに続く - https://firebase.google.com/docs/functions/get-startedGoogleクラウド機能+ Androidアプリ

をそして私はシエラを実行している私のMac上のNode.jsを通じて機能を展開することができました。私は今、ブラウザからaddMessage Http Endpointを呼び出すことができ、Firebaseコンソールのリアルタイムデータベースにメッセージを正常に追加します。

は、私はまた、Googleは、このチュートリアルに従って私のアプリにサインイン実装しました:https://developers.google.com/identity/sign-in/android/start-integrating

しかし、私は、標準のHTTPリクエストを通じて私のAndroidアプリからそしてaddMessage()関数を呼び出すことができません。拡張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); 
    } 
} 

は私が間違って何をやっている

プライベートクラスHttpSenderTask:これは私のアンドロイドのコードですか?

また、クラウド機能を利用するためのアンドロイドコードの作成方法を教えてくれるドキュメントがありますか?この問題の助けがあれば幸いです。あなたは間違ったつもりどこ

はあなたのすべて

答えて

0

ありがとうこの行はおそらくです:

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

あなたはクラウド機能によって公開されたHTTPSエンドポイントへの完全なURLにURLを構築する必要があります。関数をデプロイした後、CLIからこれを取得できます。 Firebaseのプロジェクト名がURLのホスト名の一部として含まれます。

また、クエリパラメータがHTTPパラメータに対して安全でない限り、クエリ文字列パラメータはエスケープする必要があります。

+0

私は、私のaddMessage機能のためにFirebaseコンソールから取得したURLを使用しました。ブラウザから起動すると正常に動作します。しかしアンドロイドアプリからではありません。 CLIのURLは別のものですか? – user3324792

+0

いいえ、表示されるエラーを表示するには更新してください。 「それはうまくいかない」と言うだけでは不十分です。 –

+0

私は何の誤りもありません。サーバーからの応答はまったくありません。 – user3324792

関連する問題