この項では、Python と C# の 2 つの異なるタイプのクライアントアプリケーションを使用して SQL Anywhere HTTP Web サーバにアクセスする方法について説明します。SQL Anywhere Web サービスアプリケーションの機能全般については説明しません。このトピックで説明するもの以外にも、数多くの SQL Anywhere Web サービスの機能を使用できます。
あらゆるタイプのオンライン 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; |
C# または Python を使用して XML Web サービスにアクセスするには、次のタスクを実行します。
HTTP サーバ上で Web サービスに接続するプロシージャを作成します。
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 というファイルに保存します。
HTTP サーバによって送信された結果セットに対する操作を実行します。
C# の場合は、次のコマンドを実行します。
DocHandler |
Python の場合は、次のコマンドを実行します。
python DocHandler.py |
アプリケーションによって次の出力が表示されます。
5 hello 3.14 |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |