Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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
Python 来自镜像API的Google Glass callbackUrl帖子为空?_Python_Google Mirror Api_Google Glass_Callbackurl - Fatal编程技术网

Python 来自镜像API的Google Glass callbackUrl帖子为空?

Python 来自镜像API的Google Glass callbackUrl帖子为空?,python,google-mirror-api,google-glass,callbackurl,Python,Google Mirror Api,Google Glass,Callbackurl,抱歉,因为我所知道的唯一一个web开发是django/python类型的,我可能对混合了我的代码习惯用法(REST与django URL调度工作流)感到内疚 我有一个URL处理程序,它可以作为订阅我的玻璃器皿的回调URL。我正在向处理程序发送帖子,但请求对象似乎是空的 我肯定我理解错了,但是有人能告诉我从POST通知到callbackURL获取“回复”信息的方向吗 我的URL处理程序是 A600Handler类(webapp2.RequestHandler): 我已经定义了以下URL处理程序

抱歉,因为我所知道的唯一一个web开发是django/python类型的,我可能对混合了我的代码习惯用法(REST与django URL调度工作流)感到内疚

我有一个URL处理程序,它可以作为订阅我的玻璃器皿的回调URL。我正在向处理程序发送帖子,但请求对象似乎是空的

我肯定我理解错了,但是有人能告诉我从POST通知到callbackURL获取“回复”信息的方向吗

我的URL处理程序是


A600Handler类(webapp2.RequestHandler):

我已经定义了以下URL处理程序,并且可以通过查看应用程序引擎日志来验证当用户点击reply时post函数是否得到“ping”


主要路线=[
('/',主处理器),('/logA600',A600Handler),
]

如何以用户发送的语音转录文本的形式提取有效负载?。我不明白

你试过了吗?国家

如果需要访问请求中发布的原始或非表单数据,请改为通过HttpRequest.body属性访问

如果API在其帖子中没有使用表单数据,您可能会在
request.body
中找到内容。指示内容将作为JSON而不是表单数据放置在正文中(“包含
JSON
request正文”)。我会尝试
json.loads(request.body)

你试过了吗?国家

如果需要访问请求中发布的原始或非表单数据,请改为通过HttpRequest.body属性访问


如果API在其帖子中没有使用表单数据,您可能会在
request.body
中找到内容。指示内容将作为JSON而不是表单数据放置在正文中(“包含
JSON
request正文”)。我会尝试
json.loads(request.body)

我也遇到了镜像API调用我的应用程序进行通知的问题,而这些通知是空的。我的应用程序在tomcat上运行,因此它是一个java堆栈。所有样本处理通知的方式如下:

BufferedReader notificationReader = new BufferedReader(
                new InputStreamReader(request.getInputStream()));
        String notificationString = "";

        // Count the lines as a very basic way to prevent Denial of Service
        // attacks
        int lines = 0;
        while (notificationReader.ready()) {
            notificationString += notificationReader.readLine();
            lines++;

            // No notification would ever be this long. Something is very wrong.
            if (lines > 1000) {
                throw new IOException(
                        "Attempted to parse notification payload that was unexpectedly long.");
            }
        }

        log.info("got raw notification " + notificationString);
对我来说,这总是记录为空。由于通知url必须是https,并且为了进行测试,我不能使用IP地址,所以我设置了dyndns服务以指向我的localhost:8080运行的服务。这一切似乎都是可行的,但我怀疑dyndns的工作原理是某种类型的转发或重定向,这里的post数据被删除了

我如何解决这一问题以促进当地发展

已更新: 为我解决。 我发现在读取请求之前关闭响应会导致request.inputStream已关闭的问题。移动这个

response.setContentType("text/html");
Writer writer = response.getWriter();
writer.append("OK");
writer.close();

在我将请求通知完全读入字符串后,解决了这个问题。

我还遇到了镜像API调用我的应用程序以获取通知的问题,而这些通知是空的。我的应用程序在tomcat上运行,因此它是一个java堆栈。所有样本处理通知的方式如下:

BufferedReader notificationReader = new BufferedReader(
                new InputStreamReader(request.getInputStream()));
        String notificationString = "";

        // Count the lines as a very basic way to prevent Denial of Service
        // attacks
        int lines = 0;
        while (notificationReader.ready()) {
            notificationString += notificationReader.readLine();
            lines++;

            // No notification would ever be this long. Something is very wrong.
            if (lines > 1000) {
                throw new IOException(
                        "Attempted to parse notification payload that was unexpectedly long.");
            }
        }

        log.info("got raw notification " + notificationString);
对我来说,这总是记录为空。由于通知url必须是https,并且为了进行测试,我不能使用IP地址,所以我设置了dyndns服务以指向我的localhost:8080运行的服务。这一切似乎都是可行的,但我怀疑dyndns的工作原理是某种类型的转发或重定向,这里的post数据被删除了

我如何解决这一问题以促进当地发展

已更新: 为我解决。 我发现在读取请求之前关闭响应会导致request.inputStream已关闭的问题。移动这个

response.setContentType("text/html");
Writer writer = response.getWriter();
writer.append("OK");
writer.close();

在我将请求通知完全读入字符串后,解决了这个问题。

感谢gotgenes,evrything确实隐藏在请求正文中。正如你从django处理它的方式中指出的那样。request.POST.get(“key”)仅适用于基于表单的帖子信息。镜像API返回都在我上面的处理程序类中的self.request.body中。感谢gotgenes,evrything确实隐藏在请求体中。正如你从django处理它的方式中指出的那样。request.POST.get(“key”)仅适用于基于表单的帖子信息。镜像API返回的都在我上面的处理程序类的self.request.body中。注意,如果我使用Google的代理重定向服务,并将ip地址硬编码,我也会被调用,但请求仍然为空。请注意,如果我使用谷歌的代理重定向服务,并将我的ip地址硬编码,我也会被调用,但请求仍然为空。