有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java向云端点添加参数会导致404 GoogleJsonResponseException

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

在我想向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. # 1 楼答案

    在谷歌云端点中引入新方法时,您必须做到:

    1. 将新版本上载到应用程序引擎
    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();