0

リモート wsdl から wsimport を介してスタブ ファイルを生成し、スタンドアロン クライアントを作成しました。クライアントを実行しているときに生成される HTTP リクエストは次のとおりです。

HTTP ヘッダー:

---[HTTP request - http://www.transportdirect.info/EnhancedExposedServices/CarJourneyPlannerSynchronous/v1/CarJourneyPlannerSynchronousService.asmx]---
Content-type: text/xml;charset="utf-8"
Soapaction: "http://www.transportdirect.info/TransportDirect.EnhancedExposedServices.CarJourneyPlannerSynchronous.V1/GetGridReference"
Accept: text/xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

HTTP 本文:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <wsse:UsernameToken>
        <wsse:Username>USERNAME</wsse:Username>
        <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </S:Header>
  <S:Body>
    <GetGridReference xmlns="http://www.transportdirect.info/TransportDirect.EnhancedExposedServices.CarJourneyPlannerSynchronous.V1">
      <transactionId>bfe2ccbe-9197-4992-9073-cd3a3c0e5c47</transactionId>
      <locationType>Postcode</locationType>
      <locationValue>W11</locationValue>
    </GetGridReference>
  </S:Body>
</S:Envelope>

これで、SOAP ツールでテストして正しい出力が得られたので、SOAP エンベロープ部分はまったく問題ありません。しかし、上記のHTTPリクエストは常に私に与えています

---[HTTP response - http://www.transportdirect.info/EnhancedExposedServices/CarJourneyPlannerSynchronous/v1/CarJourneyPl
annerSynchronousService.asmx - 500]---
null: HTTP/1.1 500 Internal Server Error
Cache-control: private
X-ua-compatible: IE=EmulateIE7
Content-type: text/html; charset=utf-8
Content-length: 7424
Connection: close
X-powered-by: ASP.NET

その後に、いくつかのエラーを説明する多数の html タグが続きます。

私のJavaクライアントコードは次のようになります -

CarJourneyPlannerSynchronousService service = new CarJourneyPlannerSynchronousService();
port = service.getCarJourneyPlannerSynchronousServiceSoap();
port.getGridReference(transactionId, "bla-bla", "bla-bla");

ここで何が欠けているのか教えてください。もっとコードを見たい場合はお知らせください。

4

1 に答える 1

1

次の行に注意してください。

HTTP/1.1 500 Internal Server Error

サーバー側で何か問題が発生したことを示しています。サーバー ログを確認すると、エラーの原因がわかります。

サーバーにアクセスできない場合は、Web サービスのドキュメントを見て、サーバーをクラッシュさせる可能性のある不適切なパラメーターを送信したかどうかを確認してください (SOAP リクエストを他のツールでテストしたと述べているため、非常にありそうもないことです)。 . .NET ベースの Web サービスではしばしば問題が発生するため、HTTP ヘッダーのフィールドを疑っていsoapactionます。予期しない値を送信すると、エラー 500 が発生する可能性があります。

参考文献:

于 2012-08-28T15:48:01.257 に答える