4

私はここで提供されたアドバイスに従いましたが、それは魅力のように機能しました. 現在、サーバーに接続してGetFunctionalityTestという名前のメソッドを呼び出しています。これへの唯一の入力は文字列で、これはGetFunctionalityTest.mファイルで確認できます。ここまでは順調ですね。

次に、ファイルGetSections.mによると署名が次のようなGetSectionsという名前の実際のサービスを呼び出そうとしました。

function GetSectionsResult = GetSections(obj,auth)
% GetSections(obj,auth)
% Input: auth = (Authorize)
% Output: GetSectionsResult = (ArrayOfString)

values = { auth, };
names = { 'auth', };
types = { '{WSPro.HostingWebservice}Authorize', };

soapMessage = createSoapMessage( ...
  'WSPro.HostingWebservice', ...
  'GetSections', values,names,types,'document');
response = callSoapService( obj.endpoint, ...
  'WSPro.HostingWebservice/GetSections', soapMessage);
GetSectionsResult = parseSoapResponse(response);

サーバーが提供する定義は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi=...>
  <soap:Body>
    <GetSections xmlns="WSPro.HostingWebservice">
      <auth>
        <uid>string</uid>
        <pw>string</pw>
      </auth>
    </GetSections>
  </soap:Body>
</soap:Envelope>

私の問題は、承認の構文を指定できないことです。私が理解している限り、どういうわけか2つの文字列で構成されているはずですが、うまくいきません。以下のように合成してみました。

myAuthorization = ['user', 'pass'];
myAuthorization = {'user', 'pass'};
myAuthorization = ['user' 'pass'];
myAuthorization = {'user' 'pass'};

何も助けませんでした。たくさんのエラーが発生しました。

callSoapService の使用エラー (147 行目)
不特定の障害: SOAP 障害: サーバーは要求を処理できませんでした。
---> パラメータ化されたクエリ
'(@uid nvarchar(99)) SELECT PassW FROM UserData WHERE UserId = @' は、指定されていないパラメータ '@uid' を想定しています。

自動的に作成されたすべてのファイルを参照しましたが、 AuthorizeではなくArrayOfStringの定義はありません。MatLabのドキュメントにヒットがないので、サーバーが定義するものだと思います。

  1. 認証用の資格情報を指定するにはどうすればよいですか?
  2. MatLab がAuthorizationをどのようにマップするかはどこで調べることができますか?
4

1 に答える 1

0

上記のように:

SOAP認証は、SOAPボディではなくSOAPヘッダーを介して行われます。このリンクは、認証の場合にSOAP XMLがどのように見えるかについてのアイデアを与えるかもしれません:

Web サービス SOAP ヘッダー認証

于 2014-10-03T06:51:10.843 に答える