Garoon APIの「SOAPリクエストが不正です。」の回避方法を教えてください

はじめまして。

サイボウズコミュニティにも同じ質問を投稿させていただいておりましたが、
サイボウズ社にAPIの問合せ先を尋ねたところ、こちらに質問してくださいと
言われましたので、こちらに質問させていただきます。

よろしくお願いします。

----------------------- 質問 --------------------------
サイボウズGaroonのスケジュールを外部システムから追加/変更する連携プログラムの開発を行おうとしています。

開発環境は、Visual Studio 2005 + WSE 3.0です。

試しに、
ScheduleAddEventsメソッドでスケジュールを追加するプログラムを
作りました。

しかし、以下のエラーでスケジュールを追加することができませんでした。

■エラーの応答
soap:Fault
soap:Code
soap:Valuesoap:Receiver/soap:Value
/soap:Code
soap:Reason
soap:TextSOAPリクエストが不正です。/soap:Text
/soap:Reason
soap:Detail
<code>GRN_UTIL_API_65001</code>
<diagnosis>SOAPリクエストが不正です。</diagnosis>
<cause>“Expires” がSOAPリクエストに存在しません。</cause>
<counter_measure>サイボウズオフィシャルパートナー、または販売元にお問い合わせください。</counter_measure>
/soap:Detail
/soap:Fault

SOAPリクエストにExpiresがないということが理由のようです。
しかし、SOAPリクエストを取得してみたところ、Expiresは存在しました。

エラーの回避方法を教えてください。

■SOAPリクエスト
<soap:Envelope xmlns:soap=“http://www.w3.org/2003/05/soap-envelope” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=“http://www.w3.org/2001/XMLSchema” xmlns:wsa=“http://schemas.xmlsoap.org/ws/2004/08/addressing” xmlns:wsse=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd” xmlns:wsu=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd”>
<env:Header xmlns:env=“http://www.w3.org/2003/05/soap-envelope”>
wsa:ActionScheduleAddEvents/wsa:Action
wsa:MessageIDurn:uuid:4a50422d-313b-42e9-bcf1-a0639ad24e58/wsa:MessageID
wsa:ReplyTo
wsa:Addresshttp://schemas.xmlsoap.org/ws/2004/
/wsa:ReplyTo
wsa:Tohttp://xxxxx/scripts/cbgrn/grn.exe/…
<wsse:Security env:mustUnderstand=“true”>
<wsu:Timestamp wsu:Id=“Timestamp-88e4dd90-d139-4489-bb7e-c6cd10b6586a”>
wsu:Created2015-01-27T02:22:51Z/wsu:Created
wsu:Expires2015-01-27T02:27:51Z/wsu:Expires
/wsu:Timestamp
<wsse:UsernameToken xmlns:wsu=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd” wsu:Id=“SecurityToken-7b0144eb-2d45-437b-b6fb-e3492aa9048a”>
wsse:Usernamekino/wsse:Username
<wsse:Password Type=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">kino/wsse:Password
wsse:NonceU2Akft+E3oOMbVSWFlcLTQ==/wsse:Nonce
wsu:Created2015-01-27T02:22:51Z/wsu:Created
/wsse:UsernameToken
/wsse:Security
/env:Header
soap:Body
<ScheduleAddEvents xmlns=“http://wsdl.cybozu.co.jp/schedule/2008”>
<parameters xmlns=”“>
<schedule_event id=“dummy” event_type=“normal” version=“dummy” plan=“打合” detail=“新製品について” description=“新製品についての打合せです” timezone=“Asia/Tokyo” end_timezone=“Asia/Tokyo”>
<members xmlns=“http://schemas.cybozu.co.jp/schedule/2008”>
<member>
<user id=“kino” order=“0” xmlns=”"></user>
</member>
</members>
</schedule_event>
</parameters>
</ScheduleAddEvents>
/soap:Body
/soap:Envelope

Visual Studioはあまり詳しくないのですが、
こちらでは、書かれていたXMLを編集し、
wgetで直接送信して動くことを確認してみました。

以下のようにすると認証は通るようになりました。

  • Timestamp要素をHeader要素直下に移動
  • Timestamp, Expires, Action, UsernameToken, Username, Password要素の接頭辞を削除

以下のようにすると、ScheduleAddEventsがひとまず動作するようになりました。

最終的に送信しているXMLはこのような形になります。

<soap:Envelope
 xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
 xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
 xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
  <env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
    <Action>ScheduleAddEvents</Action>
    <wsa:MessageID>urn:uuid:4a50422d-313b-42e9-bcf1-a0639ad24e58</wsa:MessageID>
    <wsa:ReplyTo>
      <wsa:Address>http://schemas.xmlsoap.org/ws/2004/...</wsa:Address>
    </wsa:ReplyTo>
    <wsa:To>http://xxxxx/scripts/cbgrn/grn.exe/...</wsa:To>
    <Security env:mustUnderstand="true">
      <UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
                     wsu:Id="SecurityToken-7b0144eb-2d45-437b-b6fb-e3492aa9048a">
        <Username>kino</Username>
        <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">kino</Password>
        <wsse:Nonce>U2Akft+E3oOMbVSWFlcLTQ==</wsse:Nonce>
        <wsu:Created>2015-01-27T02:22:51Z</wsu:Created>
      </UsernameToken>
    </Security>
    <Timestamp wsu:Id="Timestamp-88e4dd90-d139-4489-bb7e-c6cd10b6586a">
      <wsu:Created>2015-01-27T02:22:51Z</wsu:Created>
      <Expires>2019-01-27T02:27:51Z</Expires>
    </Timestamp>
  </env:Header>
  <soap:Body>
    <ScheduleAddEvents xmlns="http://wsdl.cybozu.co.jp/schedule/2008">
      <parameters xmlns="">
        <schedule_event id="dummy" event_type="normal" version="dummy" plan="打合"
                        detail="新製品について" description="新製品についての打合せです" timezone="Asia/Tokyo" end_timezone="Asia/Tokyo">
          <members xmlns="http://schemas.cybozu.co.jp/schedule/2008">
            <member>
              <user id="1" order="0" xmlns=""></user>
            </member>
          </members>
        <when>
          <datetime start="2010-07-04T09:00:00" end="2010-07-04T10:00:00"></datetime>
        </when>
      </schedule_event>
    </parameters>
    </ScheduleAddEvents>
  </soap:Body>
</soap:Envelope>

ご参考になりましたら幸いです。