2009-07-28 151 views
6

我看到Google App Engine可以託管將返回HTML等的Web應用程序。但是,通過http進行通信並接受/返回xml的Web服務又如何呢?使用Google App Engine的Web服務

有誰知道這是如何在Goggle App Engine中使用Python或Java中的事情(不支持JAS-WX)?任何樣品或文章的鏈接非常感謝。

感謝// :)

回答

9

谷歌應用程序引擎可以讓你編寫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是一個瞭解更多信息的好地方,提出問題並查看示例代碼。

3

大多數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() 
2

這是絕對有可能(而不是太難了)使用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系列。

相關問題