我写了一个python GAE端点。
task_api.py的主要目的是将deviceRegistrationId插入到云数据库中,deviceRegistrationId将从android客户端发送。我暂时避开了client_id。我的task_api.py文件:
import endpoints #import the endpoints
from protorpc import messages
from protorpc import message_types
from protorpc import remote
from google.appengine.ext import ndb
package = 'Hello'
class Task(messages.Message):
name = messages.StringField(1, required = True)
DeviceRegId = messages.StringField(2)
class TaskModel(ndb.Model):
name = ndb.StringProperty(required = True)
DeviceRegId = ndb.StringProperty()
class TaskList(messages.Message):
items = messages.MessageField(Task, 1, repeated = True)
@endpoints.api(name='task', version='v1', description='an API to save the divice registration id to database')
class TaskApi(remote.Service):
@endpoints.method(Task, Task, name = 'task.insert', path = 'task', http_method = 'POST')
def insert_task(self, request):
TaskModel(name = request.name, DeviceRegId = request.DeviceRegId).put()
return request
def list_tasks(self, request):
pass
APPLICATION = endpoints.api_server([TaskApi])
代码在GAE上编译和部署。
我已经在android客户端完成了以下程序:
1)完成了为android(https://cloud.google.com/appengine/docs/python/endpoints/endpoints_tool)
生成客户端库2)生成了gradle库,并在android studio
中添加了jar文件“as a library”3)导入客户端库是成功的,我已经更新了官方文档中提到的build.gradle和manifest文件。
4)我已经完成了所有事情,但是我在最后阶段遇到了问题(我无法理解我编写的task_api的asynctask语法)。 我提到了这个链接(https://cloud.google.com/appengine/docs/python/endpoints/getstarted/clients/android/connect_backend)。但我无法理解,如何编写asynctask以调用我的端点TaskApi。
感谢您的帮助!!