我看到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系列。