向Cloud Endpoint添加参数会导致404 GoogleJsonResponseException

时间:2015-01-04 03:29:42

标签: java android google-app-engine google-cloud-storage google-cloud-endpoints

我遇到的问题是我完成了示例GCM消息传递(https://github.com/GoogleCloudPlatform/gradle-appengine-templates/tree/master/GcmEndpoints

并且一切正常,直到我想在registerDevice类的RegistrationEndpoint方法中添加其他参数。我确保之前添加了@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 个答案:

答案 0 :(得分:1)

当您在Google Cloud Endpoints中引入新方法时,您必须执行以下操作:

  1. 将新版本上传到App Engine
  2. 如果您更改了版本名称,则必须在开发者控制台
  3. 中将其设置为默认名称 404这意味着没有这样的方法,所以我假设你还没有完成上述步骤之一。

    如果您完成了上述步骤,只需检查该方法是否可以使用API​​ Explorer

    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();