FlexからMicrosoftOfficeSharePointServer(MOSS)のウェブサービスをコールしたくてちょこちょこコード書いてたんですけど、mx.rpc.soap.WebServiceの使い方が悪いのかactionScriptで書くとうまく行かなかったので、FlexBuilderのインポートを使ってみました。
これならWSDLを指定してぽちっとやると、色々ソースをジェネレートしてくれて便利な感じになるのですが、インポートを使ってMOSSのウェブサービスを取り込もうとすると、「WSDL をロードできません。 別の URI を指定してください。」と言われてしまう。なんだよ・・・!
なので、グーグルに聞く。
AIRやflexをクライアントとしてMOSSのサービスコールしようというエントリはあまり無かったのですが、
Use Flex to retrieve data from a SharePoint listというものを見つけたので、やってみましたら意外と簡単に動いてしまいました。
ところで、これって何が嬉しいの?って感じですが、flexからMOSSのウェブサービスをコールできるという事は、適宜、MOSSにcrossdomain.xmlを置く事によって、MOSSのリストを利用したSBMぽい事が簡単に出来そうだという事です。
javascript(IEのBookMarklet)→Flex→(corssdomain.xml)→MOSS(UpdateListItems)
で、できるかな。行けそうな気がする。
IEのbookMarkletとかでアイテム投入できるってのは結構うれしいかもしれない。
で、とりあえず、FlexでMOSSのupdateListItemsをコールした何でもないソース。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
public function init(): void {
var requestXML:XML = new XML( '<UpdateListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"><listName>hoge</listName><updates><Batch><Method ID="1" Cmd="New"><Field Name="Title">1stPost</Field></Method></Batch></updates></UpdateListItems>' );
mossService.UpdateListItems( requestXML );
}
]]>
</mx:Script>
<mx:WebService id="mossService" wsdl="http://moss/_vti_bin/Lists.asmx?wsdl" service="Lists">
<mx:operation name="UpdateListItems" />
</mx:WebService>
</mx:Application>










