我看到Google App Engine可以托管将返回HTML等的Web应用程序。但是,通过http进行通信并接受/返回xml的Web服务又如何呢?使用Google App Engine的Web服务
有谁知道这是如何在Goggle App Engine中使用Python或Java中的事情(不支持JAS-WX)?任何样品或文章的链接非常感谢。
感谢// :)
我看到Google App Engine可以托管将返回HTML等的Web应用程序。但是,通过http进行通信并接受/返回xml的Web服务又如何呢?使用Google App Engine的Web服务
有谁知道这是如何在Goggle App Engine中使用Python或Java中的事情(不支持JAS-WX)?任何样品或文章的链接非常感谢。
感谢// :)
谷歌应用程序引擎可以让你编写Web服务返回的任何类型的HTTP响应内容。这包括XML,JSON,文本等
例如,看一看由谷歌提供的guestbook sample project这表明HTTP响应回来为text/plain的:
public class GuestbookServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser();
if (user != null) {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, " + user.getNickname());
} else {
resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
}
}
}
此外,app engine google group是一个了解更多信息的好地方,提出问题并查看示例代码。
大多数Python应用程序只写成形XML直接输出处理程序...这个例子用来提交根网址(“/”)的任何GET请求:
import wsgiref.handlers
from google.appengine.ext import webapp
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('<myXml><node id=1 /></myXml>')
def main():
application = webapp.WSGIApplication([('/', MainHandler)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
这是绝对有可能(而不是太难了)使用GAE来托管“通过http进行通信并接受/返回xml的Web服务”。
要解析XML请求(推测可能是作为HTTP POST或PUT请求的主体进入),您有几个选项,例如,例如pyexpat或minidom,例如this thread(特别是最后一篇文章)。
如果你愿意,你也可以使用minidom命名构建XML响应,并write回(例如,使用StringIO
实例来保存的格式的响应及其write
方法作为参数传递给你的minidom命名实例的writexml
方法,然后转身并使用该实例的getvalue
以字符串形式获得所需结果)。尽管你仅限于纯Python和一些“白名单”的C编码扩展,如pyexpat,但并不真正限制你的选择,也不会使你的生活变得更加困难。
只是不记得你的回应的内容类型标题设置为text/xml
(或一些甚至更具体和适当的,如果有的话,当然是媒体类型!) - 而且,我建议,使用UTF-8(标准文本编码,如果你的数据确实是纯ASCII的,你可以用纯ASCII表示所有的Unicode; - ),而不是奇怪的“代码页”或区域性限定的代码,如ISO-8859系列。