0

我有我有一個問題,我完成了樣品GCM消息(https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/GcmEndpoints添加參數雲端點導致404 GoogleJsonResponseException

,直到我想其他參數在該RegistrationEndpoint添加到registerDevice方法,一切工作正常類。我確信我之前添加了@Named

的變化之前,它看起來是這樣的:

@ApiMethod(name = "register") 
public void registerDevice(@Named("regId") String regId) { 
    if (findRecord(regId) != null) { 
     log.info("Device " + regId + " already registered, skipping register"); 
     return; 
    } 
    RegistrationRecord record = new RegistrationRecord(); 
    record.setRegId(regId); 
    //record.setUserName(name); 
    //record.setUserProfId(profId); 
    ofy().save().entity(record).now(); 
} 

後變它看起來像這樣:

@ApiMethod(name = "register") 
public void registerDevice(@Named("regId") String regId, @Named("name") String name, @Named("profId") String profId) { 
    if (findRecord(regId) != null) { 
     log.info("Device " + regId + " already registered, skipping register"); 
     return; 
    } 
    RegistrationRecord record = new RegistrationRecord(); 
    record.setRegId(regId); 
    record.setUserName(name); 
    record.setUserProfId(profId); 
    ofy().save().entity(record).now(); 
} 

一旦我加入這兩個參數,將GCM請求失敗,出現以下錯誤:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found 

在我的代碼的這一行(在AsyncTask

regService.register(Globals.REG_ID,"Test","Test").execute(); 

但是,當它的「測試」,「測試」被刪除像原來的教程,它工作正常!

結論,當我添加自己的參數與我想要的字段時,我無法發佈到數據存儲。有什麼建議麼?

回答

1

當你在谷歌雲端點引入新的方法,你必須做的:

  1. 上傳新版本的App Engine
  2. 如果你已經改變了版本名稱,你必須使它默認之一開發者控制檯

404意味着沒有這種方法,所以我假設你還沒有完成上述步驟之一。

如果你完成以上步驟只是檢查,如果該方法適用於使用API​​瀏覽器

https://apis-explorer.appspot.com/apis-explorer/?base=https://appname.appspot.com/_ah/api 

一兩件事。請記住檢查參數順序。從我的經驗來看,寧願是(name, profId, regId),但我可能是錯的:

regService.register("Test", "Test", Globals.REG_ID).execute(); 
+0

好吧!我是否應該將EndPoint方法中的順序更改爲字母順序?我會試一試 –

+0

不,你不需要。但生成的方法按字母順序排列參數,所以如果您有3個字符串(或相同類型的參數),您應該知道這一點。 – tomrozb

+0

愚蠢的問題,但你如何將新版本上傳到App Engine?我在API標記頭中將版本更改爲v2,並且我在本地運行了後端,並且它可以正常工作......並且我在移動設備上運行了應用程序代碼,並且錯誤仍在發生。如果我檢查api-explorer,它仍會在我的appspot網站上顯示v1。我覺得在開發控制檯的某個地方,你選擇v2但我找不到它! –