1

Reporting Services の複雑なパラメーターを入力として渡す Web サービスを照会する必要があります。これどうやってするの?

Visual Studio のクエリ デザイナーで、次のようなクエリを実行しています。

<Query>
<SoapAction>http://mywebservice.com/Customers/GetCustomers</SoapAction>
<Method Name="GetCustomers" Namespace="http://mywebservice.com/Customers/">
<Parameters>
<Parameter Name="myParams" type="xml">
   <DefaultValue>
        <myParams>
           <IdCustomer>0</IdCustomer>
        </myParams>
    </DefaultValue>
</Parameter>
</Parameters>
</Method>
<ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>

WebService はパラメーターとしてそれを期待します:

<?xml version="1.0" encoding="utf-8"?>
<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>
    <GetCustomer xmlns="http://mywebservice.com/Customers/">
      <myParams>
        <IdCustomer>int</IdCustomer>
        <IdCustomer>int</IdCustomer>
      </myParams>
    </GetCustomer>
  </soap:Body>
</soap:Envelope>

Visual Studio 2008 で試してみると、次のエラー メッセージが表示されます。

指定された URL に対する Web リクエストの実行に失敗しました。Soap Fault: System.Web.Services.Protocols.SoapException: サーバーは要求を処理できませんでした。---> System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

4

1 に答える 1

0

クエリに必要な構文の例を取得するには、テスト クライアントで送信される xml を確認する必要があります。Visual Studio に付属のwcftestclientを使用することをお勧めします。テストを実行したら、XML タブ (wcftestclient の画面下部) で xml を表示し、クエリの <DefaultValue> セクションの内容を対応するパラメーター値に置き換えることができます。

その Web サービスのクエリは次のようになります。あなた自身の状況に依存する名前空間に注意してください:

<Query>
  <SoapAction>http://mywebservice.com/Customers/GetCustomers</SoapAction>
  <Method Name="GetCustomer" Namespace="http://mywebservice.com/Customers/">
    <Parameters>
      <Parameter Name="myParams" type="xml">
        <DefaultValue xmlns:a="http://schemas.datacontract.org/2004/07/MyWebServices">
          <a:IdCustomer>0</a:IdCustomer>
          <a:IdCustomer>1</a:IdCustomer>
        </DefaultValue>
      </Parameter>
    </Parameters>
  </Method>
</Query>

また、<Parameter type="xml"> があることがわかります。私にとっては、同様のクエリに何時間も費やし、type="xml"がありませんでした。その属性は、MSDN で十分に文書化されていないようです。

于 2015-08-27T14:31:11.513 に答える