2017-12-18 227 views
0

我跟着這個谷歌雲功能教程 - https://firebase.google.com/docs/functions/get-started谷歌雲計算功能+ Android應用

我能夠通過我的Mac上運行的Node.js塞拉利昂部署功能。我現在可以成功地從瀏覽器中調用我的addMessage Http Endpoint,併成功將該消息添加到Firebase控制檯中的實時數據庫中。

我還實施了谷歌註冊在我的應用程序按照本教程:https://developers.google.com/identity/sign-in/android/start-integrating

不過,我無法通過一個標準的HTTP請求來調用我的Android應用程序的方法addMessage()函數。這是我的Android代碼:

私有類HttpSenderTask擴展的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); 
    } 
} 

我在做什麼錯?

此外,是否有一些文件,可以教我們如何編寫利用雲功能的android代碼?任何幫助在這個問題將不勝感激。

謝謝大家

回答

0

此行可能是你要去哪裏錯了:

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

你需要建立一個URL到完整URL到HTTPS端點通過雲功能曝光。您可以在部署您的功能後通過CLI獲取此信息。它會將您的Firebase項目名稱作爲URL中主機名的一部分。

另請注意,任何查詢字符串參數都應該轉義,除非您確定它們對於HTTP參數是安全的。

+0

我已經使用我從Firebase控制檯獲得的URL添加了我的addMessage函數。它從瀏覽器啓動時可以成功運行。但不是從android應用程序。 CLI url是其他的東西嗎? – user3324792

+0

不能。請更新以顯示您收到的錯誤。僅僅說「不起作用」是不夠的。 –

+0

我沒有收到任何錯誤。根本沒有來自服務器的響應。 – user3324792