Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何在本地主机上调用Google云端点RPC API?_Google App Engine_Google Cloud Endpoints - Fatal编程技术网

Google app engine 如何在本地主机上调用Google云端点RPC API?

Google app engine 如何在本地主机上调用Google云端点RPC API?,google-app-engine,google-cloud-endpoints,Google App Engine,Google Cloud Endpoints,编辑我在上面发布了一个问题,应该在Google AppEngine SDK的1.9.16版中修复。 我正在使用谷歌云端点开发一项服务 当我将REST和rpcapi部署到appengine上时,它们都工作得很好。然而奇怪的是,当我在本地(localhost)测试服务时,REST调用工作正常,但是我在使用RPC调用时遇到了问题 我在后端的方法签名是: @ApiMethod(name = "user.updateprofile", httpMethod = HttpMethod.POST) pub

编辑我在上面发布了一个问题,应该在Google AppEngine SDK的1.9.16版中修复。


我正在使用谷歌云端点开发一项服务

当我将REST和rpcapi部署到appengine上时,它们都工作得很好。然而奇怪的是,当我在本地(localhost)测试服务时,REST调用工作正常,但是我在使用RPC调用时遇到了问题

我在后端的方法签名是:

@ApiMethod(name = "user.updateprofile", httpMethod = HttpMethod.POST)
public UserProfileDto updateProfile(@Named("sessionToken") String sessionToken, UserProfileDto profile) throws UnauthorizedException { return profile; }
为了简单起见,我只是将
UserProfileDto直接返回到

我已尝试在本地执行以下请求:

POST http://localhost:4567/_ah/api/rpc?prettyPrint=false
Content-Type: application/json-rpc
Accept: application/json-rpc
{
"method": "mobilebackend.user.updateprofile",
"id": "gtl_1",
"jsonrpc": "2.0",
"params": {
    "sessionToken": "12345",
    "resource": {
      "username": "foo",
      "userPrivate": true
    }
},
"apiVersion": "v1"
}
当我在
updateProfile
方法中设置断点时,我看到
sessionToken
是正确的
12345
,但是
username
字段是
null
userPrivate
字段是
false
,即使我将其指定为
true
UserProfileDto(profile)
的实例不是
null

问题在于在使用RPC调用localhost时,无法将值注入DTO的字段中。当我在部署的版本上测试它时,它工作得很好,当我使用REST调用时,它在本地主机上和部署在App Engine上都工作得很好

当我在上面的请求中更改url以在AppEngine上定位我的应用程序的部署版本时,它工作得很好<代码>https://.appspot.com/_ah/api/rpc?prettyPrint=false

我在本地主机上使用以下命令启动服务:

mvn appengine:devserver
为了调用云端点RPC方法localhost,我是否错过了一些配置?还是不支持


我应该注意到,我也尝试过使用RPC的自动生成的iOS客户端库,它也失败了,错误与服务未能将值注入DTO对象的字段相同。

我已经测试了Google AppEngine SDK的1.9.17版,可以确认在RPC POST请求中使用对象现在起作用了很好。

我也遇到了同样的问题,localhost将继续为传递的参数提供空结果。在我的笔记中找到了一些解决本地主机问题的方法,从appengine sdk运行本地devserver,参数为appengine-java-sdk-1.8.6/bin/dev_appserver.sh--address=“0.0.0.0”这解决了我刚才的一些本地主机问题。不记得这个空传递是否是其中之一,这可能值得尝试吗?@Pega88谢谢,我将尝试用0.0.0.0启动开发服务器,看看这是否解决了问题。你看到了吗:谷歌声明它应该在1.9.16版中修复。这是下一个版本,因为1.9.15是在几天前发布的。它们几乎每个月发行一次,所以我期待着下一次发行作为圣诞礼物。;)你的问题解决了吗?@MarCialR-嗨。还没有,但是,我可以看到几天前发布了一个新版本1.9.17。我在1.9.16得到了修复的承诺,所以在圣诞节和新年之间,当我有时间的时候,我会检查它并返回给你。如果我在新年前忘记了,请发布另一条评论作为提醒。:)@dynamokaj你能试试1.9.17吗?