純粋なAS 3の下でWebServiceメソッドのまとめにアクセスする
10688 ワード
今日は純AS 3でWebServiceにアクセスする方法を紹介します...Flexがこのクラスを持っていると言ったらまたはサードパーティのクラスがあります.それは下を見続ける必要はありません.「WebServiceクラスの使い方」を紹介していないので..必要な場合は、自分で結果を検索してください.あるいは自分で助けを見ます..ご協力ありがとうございます.WebServiceの概念についてはあまり言いません.わからないGoogleやBaiduはすぐにいいです.今日は以下のWebServiceで一連のテストを行います.wsは指定された携帯電話番号の帰属を返すことができます.http://www.webxml.com.cn/によって提供される.このサイトには実用的なwsがたくさんあります.http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx上のアドレスを開いてページを見て、wsの2つの方法を紹介しました.
getDatabaseInfo
国内携帯電話番号帰属地データベース情報取得
入力パラメータ:なし;
データを返します:1 D文字列配列(省都市レコード数).
getMobileCodeInfo
国内の携帯電話番号の帰属地の省、地区と携帯電話カードのタイプの情報を獲得します
入力パラメータ:mobileCode=文字列(携帯電話番号、最低上位7桁)、userID=文字列(ビジネスユーザーID)無料ユーザーは空の文字列;
データを返す:文字列(携帯電話番号:省都市携帯電話カードタイプ).
以下のテストはgetMobileCodeInfoを例にして行います.メソッド名getMobileCodeInfo、2つのパラメータが必要です..1つはmobileCode、すなわち携帯電話番号であり、以下の例はいずれも1380138000、2つ目はuserIDを用いる、空にすればよい方法1:GETの一部のwsがGET方法をサポートする.このタイプのwsについて.私たちは直接get方式を使ってデータフォーマットを取得することができます:WSアドレス/方法?パラメータ=値[&パラメータ=値...]上のように..私たちは直接このようなURLアドレスをつなぎます:http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=13800138000&userID=直接アクセスすることができます..ブラウザを開くとAS 3に表示されます..URLLoaderを使用してロードします.コードは次のとおりです.
方法2:POSTこの方法は上のGETと同じです..一部のwsのみサポート..呼び出し方法は基本的に上のGETと同じです..メソッドのパラメータをPOST形式でAS 3に送信するだけである.私たちはやはりURLLoaderを使っています.コードは次のとおりです.
メソッド3:このメソッドに一般的にアクセスする..従来の方法でWSにアクセスし、すべてのWSが適用されます.PS:しばらくはhttp://www.webxml.com.cn/のWSはテストをします..(バックグラウンドが分からないので、自分でWSテストを書くことができません.)皆さんが問題を発見したら..回答可指摘..まず...FLEXのWSクラスを使用して、上記のWSを呼び出すプログラムを書きます.プログラムでデータをキャプチャ..まずHeadの情報は..
POSTコンテンツは
POSTの内容を分析する..XML形式の文字列リクエストが見つかりました..
書式
内
getMobileCodeInfoをメソッド名とする
mobileCodeはパラメータ
1380138000はmobileCodeの値です
http://WebXml.com.cn/このwsのNamespace
tnsは任意の名前です..ここではtns(targetNamespace略記?)
フォーマットがわかったら..私たちはAS 3でこれらのデータをつなぐことができます.そしてWSにアクセス
コードは次のとおりです.
方法4:WebServiceクラスのカスタマイズ
方法3..WebServiceのアクセスの実現原理を知っています.
でも実現するのは面倒です.メソッド名を手動で書く必要があります..パラメータ名..ns等
実はこれらの情報..すべてwsの中で説明があります..
FlexのクラスとサードパーティのWebServiceクラスも異なる手段で..
最終生成要求のXML..
WSへのアクセスを容易にする..
FlexのWebServiceを例に..
まず住所にアクセスしますか?WSDL
のように
http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
取得方法および対応するパラメータ名..(types.schema.elementは対応する方法であり、各elementの下にパラメータがある)
ns(types.schemaの@targetNamespace?)を取得します.
そして、対応するメソッドを呼び出すと、リクエスト内容とrequestHeadersのSOAPActionを自動的に接続できます.
再アクセス
中にはflashを継承することもできます.utils.Proxy..
callPropertyを書き換えます.
FlexのWebServiceのような
webService.メソッド名(...パラメータ)のような呼び出しフォーマット..
詳細パラメータutils.Proxy...
getDatabaseInfo
国内携帯電話番号帰属地データベース情報取得
入力パラメータ:なし;
データを返します:1 D文字列配列(省都市レコード数).
getMobileCodeInfo
国内の携帯電話番号の帰属地の省、地区と携帯電話カードのタイプの情報を獲得します
入力パラメータ:mobileCode=文字列(携帯電話番号、最低上位7桁)、userID=文字列(ビジネスユーザーID)無料ユーザーは空の文字列;
データを返す:文字列(携帯電話番号:省都市携帯電話カードタイプ).
以下のテストはgetMobileCodeInfoを例にして行います.メソッド名getMobileCodeInfo、2つのパラメータが必要です..1つはmobileCode、すなわち携帯電話番号であり、以下の例はいずれも1380138000、2つ目はuserIDを用いる、空にすればよい方法1:GETの一部のwsがGET方法をサポートする.このタイプのwsについて.私たちは直接get方式を使ってデータフォーマットを取得することができます:WSアドレス/方法?パラメータ=値[&パラメータ=値...]上のように..私たちは直接このようなURLアドレスをつなぎます:http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=13800138000&userID=直接アクセスすることができます..ブラウザを開くとAS 3に表示されます..URLLoaderを使用してロードします.コードは次のとおりです.
package {
02. import flash.display.Sprite;
03. import flash.events.Event;
04. import flash.net.URLLoader;
05. import flash.net.URLRequest;
06.
07. public class WSExample extends Sprite
08. {
09.
10. public function WSExample()
11. {
12. init();
13. }
14. private function init():void
15. {
16. var loader:URLLoader = new URLLoader()
17. loader.addEventListener(Event.COMPLETE,complete);
18. loader.load(new URLRequest("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=13800138000&;userID="))
19. }
20. private function complete(e:Event):void
21. {
22. trace(XML(e.target.data))//13800138000:
23. }
24. }
25.}
方法2:POSTこの方法は上のGETと同じです..一部のwsのみサポート..呼び出し方法は基本的に上のGETと同じです..メソッドのパラメータをPOST形式でAS 3に送信するだけである.私たちはやはりURLLoaderを使っています.コードは次のとおりです.
package {
02. import flash.display.Sprite;
03. import flash.events.Event;
04. import flash.net.URLLoader;
05. import flash.net.URLRequest;
06. import flash.net.URLRequestMethod;
07.
08. public class WSExample2 extends Sprite
09. {
10.
11. public function WSExample2()
12. {
13. init();
14. }
15.
16. private function init():void
17. {
18. var loader:URLLoader = new URLLoader()
19. loader.addEventListener(Event.COMPLETE,complete);
20.
21. var request:URLRequest = new URLRequest("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo")
22. request.method = URLRequestMethod.POST;
23. request.data = "mobileCode=13800138000&userID="
24. loader.load(request)
25. }
26. private function complete(e:Event):void
27. {
28. trace(XML(e.target.data))//13800138000:
29. }
30. }
31.}
メソッド3:このメソッドに一般的にアクセスする..従来の方法でWSにアクセスし、すべてのWSが適用されます.PS:しばらくはhttp://www.webxml.com.cn/のWSはテストをします..(バックグラウンドが分からないので、自分でWSテストを書くことができません.)皆さんが問題を発見したら..回答可指摘..まず...FLEXのWSクラスを使用して、上記のWSを呼び出すプログラムを書きます.プログラムでデータをキャプチャ..まずHeadの情報は..
(Request-Line) POST /WebServices/MobileCodeWS.asmx HTTP/1.1
02.Accept */*
03.Accept-Encoding gzip, deflate
04.Accept-Language zh-CN
05.Cache-Control no-cache
06.Connection Keep-Alive
07.Content-Length 375
08.Content-Type text/xml; charset=utf-8
09.Cookie WebXmlCookies=WeatherProvince=31124&WeatherCity=2419; ASP.NET_SessionId=qvrl3z45fqbngw55mdjysp3m; __utma=89798685.2765186755903630000.1237825717.1237861008.1237903668.4; __utmz=89798685.1237825717.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=89798685.1.10.1237903668; __utmc=89798685
10.Host www.webxml.com.cn
11.SOAPAction "http://WebXml.com.cn/getMobileCodeInfo"
12.User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; Trident/4.0; QQDownload 1.7; TencentTraveler 4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
13.x-flash-version 10,0,22,87
POSTコンテンツは
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2. <SOAP-ENV:Body>
3. <tns:getMobileCodeInfo xmlns:tns="http://WebXml.com.cn/">
4. <tns:mobileCode>13800138000</tns:mobileCode>
5. </tns:getMobileCodeInfo>
6. </SOAP-ENV:Body>
POSTの内容を分析する..XML形式の文字列リクエストが見つかりました..
書式
内
getMobileCodeInfoをメソッド名とする
mobileCodeはパラメータ
1380138000はmobileCodeの値です
http://WebXml.com.cn/このwsのNamespace
tnsは任意の名前です..ここではtns(targetNamespace略記?)
フォーマットがわかったら..私たちはAS 3でこれらのデータをつなぐことができます.そしてWSにアクセス
コードは次のとおりです.
package {
02. import flash.display.Sprite;
03. import flash.events.Event;
04. import flash.net.URLLoader;
05. import flash.net.URLRequest;
06. import flash.net.URLRequestHeader;
07. import flash.net.URLRequestMethod;
08.
09. public class WSExample3 extends Sprite
10. {
11.
12. public function WSExample3()
13. {
14. init();
15. }
16.
17. private function init():void
18. {
19. // XML
20. var s:XML = <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
21. <SOAP:Body>
22. <tns:getMobileCodeInfo xmlns:tns="http://WebXml.com.cn/">
23. <tns:mobileCode>13800138000</tns:mobileCode>
24. <tns:userID></tns:userID>
25. </tns:getMobileCodeInfo>
26. </SOAP:Body>
27. </SOAP:Envelope>
28. // tns,getMobileCodeInfo,mobileCode,userID
29.
30.
31. var request:URLRequest = new URLRequest("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx")
32. request.method = URLRequestMethod.POST;
33.
34. // requestHeaders, , Content-Type SOAPAction
35. //Content-Type ..
36. //SOAPAction ws Namespace+ ..
37. var headers:Array = [];
38. headers.push(new URLRequestHeader("Content-Type", "text/xml; charset=utf-8"));
39. headers.push(new URLRequestHeader("SOAPAction", "http://WebXml.com.cn/getMobileCodeInfo"));
40. request.requestHeaders = headers;
41.
42. //
43. request.data = s.toXMLString();
44.
45. var loader:URLLoader = new URLLoader();
46. loader.addEventListener("complete", complete);
47. loader.load(request)
48. }
49. private function complete(e:Event):void
50. {
51. trace(XML(e.target.data))
52. // :
53. //<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
54. // <soap:Body>
55. // <getMobileCodeInfoResponse xmlns="http://WebXml.com.cn/">
56. // <getMobileCodeInfoResult>13800138000: </getMobileCodeInfoResult>
57. // </getMobileCodeInfoResponse>
58. // </soap:Body>
59. //</soap:Envelope>
60. // getMobileCodeInfoResult
61. }
62. }
63.}
方法4:WebServiceクラスのカスタマイズ
方法3..WebServiceのアクセスの実現原理を知っています.
でも実現するのは面倒です.メソッド名を手動で書く必要があります..パラメータ名..ns等
実はこれらの情報..すべてwsの中で説明があります..
FlexのクラスとサードパーティのWebServiceクラスも異なる手段で..
最終生成要求のXML..
WSへのアクセスを容易にする..
FlexのWebServiceを例に..
まず住所にアクセスしますか?WSDL
のように
http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL
取得方法および対応するパラメータ名..(types.schema.elementは対応する方法であり、各elementの下にパラメータがある)
ns(types.schemaの@targetNamespace?)を取得します.
そして、対応するメソッドを呼び出すと、リクエスト内容とrequestHeadersのSOAPActionを自動的に接続できます.
再アクセス
中にはflashを継承することもできます.utils.Proxy..
callPropertyを書き換えます.
FlexのWebServiceのような
webService.メソッド名(...パラメータ)のような呼び出しフォーマット..
詳細パラメータutils.Proxy...