1

.netから呼び出そうとしているサードパーティのWebサービス(おそらくpeoplesoft EIPサービス)があります。サービス参照と古いWeb参照を使用してこのサービスを呼び出そうとしましたが、呼び出すたびに、サービスから「何も」という応答が返されます。

SoapUIを介してサービス呼び出しを実行しましたが、正常に機能します。Fiddlerを使用してネットワークトラフィックをキャプチャしましたが、SoapUiまたは.Netからサービスを呼び出すと、呼び出しから同じ結果のxmlが返されることに気付きました。つまり、通話が機能しているということです。WCF内でトレースとログ記録をオンにしましたが、エラーは表示されません。また、例外をスローすることもありません。

したがって、私の理論では、.netはxmlをサービスから.netオブジェクトに変換するのに苦労しています。

これが私のコードの抜粋です:

Dim psclient As New psService.LSS_WEBORDER_PortTypeClient

Dim psreq As New psService.LSS_WEBORDER_REQ_MSG_TypeShape
psreq = New psService.LSS_WEBORDER_REQ_MSG_TypeShape

Dim orderinfo(1) As psService.Transaction_TypeShape

Dim captureid As String = "WB" & Right(Guid.NewGuid.ToString, 8)
orderinfo(0) = New psService.Transaction_TypeShape
orderinfo(0).LSS_WEBOHDR_WRK = New psService.LSS_WEBOHDR_WRKMsgDataRecord_TypeShape
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID = New psService.CAPTURE_ID_TypeShape
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID.Value = captureid

psreq.MsgData() = orderinfo

Dim response As New psService.LSS_WEBORDER_RESP_MSG_TypeShape
response = psclient.LSS_WEBORDER_OP(psreq)
response.ToString() <-- this throws an exception because "response" is nothing. 
psclient.Close()

どんな助けでもいただければ幸いです。

ポール

4

1 に答える 1

1

私は今日、同僚の少しの助けとグーグルの深い掘り下げでそれを理解しました。

基本的に、peoplesoft WSDLが持っていた名前空間は次のとおりです。http://xmlns.oracle.com/Enterprise/Tools/schemas/LSS_WEBORDER_RESP_MSG.v1 しかし、掘り下げた後、応答の名前空間が異なることに気付きました:http: //peoplesoft.com/ LSS_WEBORDER_RESP_MSGResponse

だから私は2つのオプションがあります。1.プロキシクラスを生成する前に、wsdlの名前空間を変更します。2.reference.vbプロキシクラスを変更して正しい名前空間を設定します。

今のところオプション1を選択しています。もっと良い方法があったらいいのにと思います。

私はここからいくつかの助けを得ました:http://www.primordialcode.com/index.php/2008/10/15/invoking-javaaxis-web-service-net-return-null-issue/

于 2010-07-08T19:46:15.683 に答える