2009-07-28 17 views
6

के साथ वेब सेवाएं मैं देखता हूं कि Google App Engine वेब अनुप्रयोगों को होस्ट कर सकता है जो HTML वापस लौटाएंगे, लेकिन वेब सेवाओं के बारे में क्या है जो http पर संचार करते हैं और xml स्वीकार/वापस करते हैं?Google App Engine

क्या किसी को पता है कि यह गोगल ऐप इंजन में पाइथन के साथ या जावा में उस मामले के लिए कैसे किया जा रहा है (जेएएस-डब्ल्यूएक्स समर्थित नहीं है)? किसी भी लिंक ओ नमूने या लेख की सराहना की है।

धन्यवाद // :)

उत्तर

9

Google अनुप्रयोग इंजन आप वेब सेवाओं है कि HTTP प्रतिसाद सामग्री के किसी भी प्रकार वापसी में लिखने के लिए अनुमति देता है। इस एक्सएमएल, json, पाठ, आदि

उदाहरण के लिए, guestbook sample project गूगल द्वारा की पेशकश पर एक नज़र जो HTTP प्रतिसाद वापस पाठ के रूप में आ रहा है पता चलता/सादे लेने में शामिल हैं:

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

अधिकांश अजगर क्षुधा सिर्फ एक हैंडलर कि आकार एक्सएमएल सीधे आउटपुट बारे में ... इस उदाहरण जड़ यूआरएल ("/") को प्रस्तुत की किसी भी प्राप्त अनुरोधों कार्य करता है:

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

यह निश्चित रूप से संभव है और (नहीं बहुत कठिन) "वेब सेवाओं पर संचार करने वाली वेब सेवाओं और स्वीकार/वापस एक्सएमएल" होस्ट करने के लिए जीएई का उपयोग करने के लिए।

एक्सएमएल अनुरोधों का विश्लेषण करने के लिए (संभावित रूप से HTTP पोस्ट या पुट अनुरोधों के शरीर के रूप में आ रहा है), आपके पास कई विकल्प हैं, उदा। इसके ऊपर pyexpat या minidom, उदाहरण के लिए this thread देखें (विशेष रूप से उस पर अंतिम पोस्ट)।

आप चाहें तो आप भी जैसे एक StringIO उदाहरण का उपयोग कर स्वरूपित प्रतिक्रिया और अपने minidom उदाहरण के writexml विधि करने के लिए तर्क के रूप में अपनी write विधि धारण करने के लिए है, तो चारों ओर मोड़ minidom इस्तेमाल कर सकते हैं XML प्रतिक्रिया और यह write वापस निर्माण करने के लिए (यदि और स्ट्रिंग के रूप में आवश्यक परिणाम प्राप्त करने के लिए उस उदाहरण के getvalue का उपयोग करना)। भले ही आप शुद्ध पायथन तक सीमित हैं और कुछ "whiteslisted" सी-कोडेड एक्सटेंशन जैसे कि पिक्सैपेट, जो वास्तव में आपके विकल्पों को सीमित नहीं करता है, न ही आपके जीवन को काफी कठिन बना देता है।

बस अपनी प्रतिक्रिया के सामग्री प्रकार शीर्षलेख को text/xml (या कुछ मीडिया प्रकार जो कि अधिक विशिष्ट और उचित है, यदि कोई हो, तो!) - और, मैं अनुशंसा करता हूं, यूटीएफ -8 (मानक पाठ का उपयोग करें) एन्कोडिंग जो आपको सामान्य ASCII होने के दौरान यूनिकोड को व्यक्त करने देता है यदि आपका डेटा सादा ASCII होने लगता है! -), अजीब "कोड पेज" या क्षेत्रीय रूप से सीमित कोड जैसे आईएसओ -885 9 परिवार।