4

wsimport.exeを使用してsoapクライアントのクラスを生成しました。

私のリクエストは次のようになります

POST /posaservice/servicemanager.asmx HTTP/1.1
Host: ****
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.pininteract.com/BalanceInquiry"

<?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:Header>
    <AuthenticationHeader xmlns="http://www.pininteract.com">
      <userId>VALUE</userId>
      <password>VALUE</password>
    </AuthenticationHeader>
  </soap:Header>
  <soap:Body>
    <BalanceInquiry xmlns="http://www.pininteract.com" />
  </soap:Body>
</soap:Envelope>

しかし、認証ヘッダー部分にパラメーターを渡す方法がわかりません。現在、私のコードは次のようになっています

val client = new ServiceManager().getServiceManagerSoap()
var res = client.balanceInquiry()
println(res)

とりわけAuthenticationHeaderクラスを生成していますが、その使用方法がわかりません。

4

2 に答える 2

1

JAX-WSを使用してこれよりも良い解決策を見つけることができませんでした。

このアプローチを使用して、任意のヘッダーを送信できます。

wsimport -keep -verbose -XadditionalHeaders https:// yourWebService?WSDL

「XadditionalHeaders」を使用してWebServiceクライアントを生成すると、メソッドParametersの1つとしてHeaderを使用してStub / Portメソッドが生成されます。これは、他のパラメーターと同じように設定できます。

情報sysInfoOne=siOne.doGetSystemInfo(YourParam); になります

情報sysInfoOne=siOne.doGetSystemInfo(YourParam、YourAnyTypeOfHeader); 参照-JAXWS仕様。

そしてこれは、XMLを編集/送信するのではなく、開発者がやりたいことです。

私が試した他のアプローチは、JAX-WSクライアントハンドラーを追加し、SAAJクライアントを使用することでした。どちらも機能します。

于 2014-07-15T21:38:51.887 に答える
0

実際、stackoverflowをさらに検索した後、問題の解決策を見つけまし た。JavaJAX-WSを使用してSOAPヘッダーを追加するにはどうすればよいですか。

于 2012-10-02T15:04:53.530 に答える