Google App Engineは、htmlなどを返すWebアプリケーションをホストできることがわかります。しかし、http経由で通信し、xmlを受け入れる/返すWebサービスはどうでしょうか?Google App Engineを使用したWebサービス
これはPythonのGoggle App EngineやJavaの場合(JAS-WXはサポートされていません)どのように行われているのですか?サンプルや記事へのリンクは大変ありがたいです。
おかげ// :)
Google App Engineは、htmlなどを返すWebアプリケーションをホストできることがわかります。しかし、http経由で通信し、xmlを受け入れる/返すWebサービスはどうでしょうか?Google App Engineを使用したWebサービス
これはPythonのGoggle App EngineやJavaの場合(JAS-WXはサポートされていません)どのように行われているのですか?サンプルや記事へのリンクは大変ありがたいです。
おかげ// :)
Google App Engineが使用すると、HTTPレスポンスのコンテンツの任意の型を返すWebサービスを作成することができます。これは、例えば、XML、JSON、テキストなど
を含み、プレーンテキスト/として戻ってくるHTTPレスポンスを示しているGoogleが提供guestbook sample projectを見てみましょう:
さらに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を出力ハンドラを記述...この例では、ルートURL(「/」)に提出された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を受け入れ/返すウェブサービス"をホストする。
XMLリクエストを解析するには(おそらくHTTP POSTまたはPUTリクエストの本体として送られます)、いくつかのオプションがあります。 pyexpatまたはminidomの上に表示されます(例:this thread、特にその最後の投稿)。
は、あなたはまた、例えば、その後、フォーマットされた応答とあなたのminidomインスタンスのwritexml
メソッドの引数としてのwrite
方法を保持するためにStringIO
インスタンスを使用して周りに回す(XMLレスポンスとバックwriteそれを構築するためにminidomを使用することができ、希望する場合そのインスタンスのgetvalue
を使用して、必要な結果を文字列として取得します)。純粋なPythonに限定されていて、pyexpatのようなCコードの拡張子をいくつか "whiteslisted"しても、あなたの選択肢はそれほど制限されておらず、あなたの人生は大幅に難しくなりません。
あなたのレスポンスのコンテンツタイプヘッダーをtext/xml
に設定することを覚えておいてください(もちろん、もしあれば、より具体的で適切なメディアタイプもあります)。 - UTF-8(標準テキストあなたのデータが平易なASCIIであるならばASCIIである間にすべてのUnicodeを表現することができます! - )、奇妙な "コードページ"やISO-8859ファミリのような地域限定のコードではありません。