このトピックでは、Python と C# の 2 つの異なるタイプのクライアントアプリケーションを使用して SQL Anywhere HTTP Web サーバーにアクセスする方法について説明します。SQL Anywhere Web サービスアプリケーションの機能全般については説明しません。このトピックで説明するもの以外にも、数多くの SQL Anywhere Web サービスの機能を使用できます。
次のタスクが実行されます。
HTTP サーバー上で Web サービスに接続するプロシージャーを作成します。
HTTP サーバーによって送信された結果セットに対する操作を実行します。
あらゆるタイプのオンライン Web サーバーに接続する SQL Anywhere Web クライアントアプリケーションを開発できますが、このマニュアルでは、ローカル SQL Anywhere HTTP サーバーをポート 8082 で起動し、次の SQL 文を使用して作成された SampleXMLService という Web サービスに接続することを前提としています。
CREATE SERVICE SampleXMLService TYPE 'XML' USER DBA AUTHORIZATION OFF AS CALL sp_echo2(:i, :f, :s); CREATE PROCEDURE sp_echo2(i INTEGER, f NUMERIC(6,2), s LONG VARCHAR ) RESULT( ret_i INTEGER, ret_f NUMERIC(6,2), ret_s LONG VARCHAR ) BEGIN SELECT i, f, s; END; |
HTTP サーバーの設定の詳細については、HTTP Web サーバーとして SQL Anywhere を使用するためのクイックスタートを参照してください。
SampleXMLService Web サービスにアクセスするコードを作成します。
C# の場合は、次のコードを入力します。
using System; using System.Xml; public class WebClient { static void Main(string[] args) { XmlTextReader reader = new XmlTextReader( "http://localhost:8082/SampleXMLService?i=5&f=3.14&s=hello"); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: if (reader.Name == "row") { Console.Write(reader.GetAttribute("ret_i") + " "); Console.Write(reader.GetAttribute("ret_s") + " "); Console.WriteLine(reader.GetAttribute("ret_f")); } break; } } reader.Close(); } } |
このコードを DocHandler.cs というファイルに保存します。
プログラムをコンパイルするには、コマンドプロンプトで次のコマンドを実行します。
csc /out:DocHandler.exe DocHandler.cs |
Python の場合は、次のコードを入力します。
import xml.sax class DocHandler( xml.sax.ContentHandler ): def startElement( self, name, attrs ): if name == 'row': table_int = attrs.getValue( 'ret_i' ) table_string = attrs.getValue( 'ret_s' ) table_numeric = attrs.getValue( 'ret_f' ) print('%s %s %s' % ( table_int, table_string, table_numeric )) parser = xml.sax.make_parser() parser.setContentHandler( DocHandler() ) parser.parse('http://localhost:8082/SampleXMLService?i=5&f=3.14&s=hello') |
このコードを DocHandler.py というファイルに保存します。
アプリケーションを実行します。
C# の場合は、次のコマンドを実行します。
DocHandler |
Python の場合は、次のコマンドを実行します。
python DocHandler.py |
アプリケーションによって次の出力が表示されます。
5 hello 3.14 |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |