PROC SOAP 経由で SAS (9.3) を使用して Sharepoint (2007) リストを更新しようとしています (SAS は Unix GRID 上に存在します)。sharepoint サイトでは基本認証が有効になっています (PROC SOAP は NTLM を介して認証できないため)。
XML Libname エンジンを使用して Sharepoint リストからデータを正常に取得できますが、PROC SOAP XML データを介して Sharepoint リスト Web サービスに戻すことはできません。具体的には、共有ポイントリスト内のアイテムを追加および更新しようとしていますhttp://[intranet_site]/sites/IT/_vti_bin/Lists.asmx
SAS ログ出力:
18399 %let RESPONSE=RESPONSE;
18400 proc soap in=REQUEST
18401 out=&RESPONSE
18402 url="http://[intranet_site]/sites/IT/_vti_bin/Lists.asmx"
18403 webusername="[username]"
18404 webpassword="[password]"
18405 webdomain="[domain]"
18406 SOAPACTION="http://schemas.microsoft.com/sharepoint/soap/UpdateListItems"
18407 ;
18408 run;
ERROR: org.springframework.ws.client.WebServiceTransportException: Unauthorized [401]
SOAPUI を使用して、Lists.asmx Web サービスに渡される XML が有効であることを確認しました (SOAPUI を介して手動で実行すると、Sharepoint で期待どおりにリスト アイテムを実際に作成および更新できます。
エラーが明示的に示しているように、何らかの理由で、PROC SOAP に入力されているユーザー認証が SharePoint に反映されていません (私は SharePoint で管理者権限を持っているため、正しい権限が必要です)。これについて非常に混乱しているのは、XML Libname を介して同じ資格情報をフィードし、データをうまくプルバックできることです...
**質問**
- PROC SOAP を介して資格情報を渡している場合、Sharepoint に対して認証できないのはなぜですか?
- この XML を SharePoint に渡すための他の回避策はありますか (IE: XML LIBNAME または PROC HTTP は、XML を渡すことでこれをサポートできますか)?
- 問題はどこにありますか:PROC SOAPを使用したSAS(プロシージャを呼び出す方法)またはSharepointを使用した場合?
...完全を期すために、PROC SOAP に渡される XML の例を以下に示します (SOAP 1.1 - これは PROC SOAP でサポートされる必要があります)。
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<UpdateListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>{851DDBB5-1765-444D-9012-0210F006A4AF}</listName>
<updates>
<Batch OnError="Continue" ListVersion="1">
<Method ID="1" Cmd="New">
<Field Name='ID'>NEW</Field>
<Field Name='Title'>DUMMY</Field>
[...shortened for space...]
</Method>
</Batch>
</updates>
</UpdateListItems>
</soap:Body>
</soap:Envelope>