web-dev-qa-db-ja.com

soapuiを使用したWSDL / SOAPテスト

SoapuiでWebサービス(wsdl/soap)をテストしました。と私はエラーがあります:http/log:エラー400 BAD REQUEST。

私のwsdlでエラーは何ですか?

エラーログ :

un Jun 05 14:10:37 CEST 2011:ERROR:javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
   javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
    at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlInterfaceDefinition.load(WsdlInterfaceDefinition.Java:48)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlContext.loadDefinition(WsdlContext.Java:66)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlContext.loadDefinition(WsdlContext.Java:30)
    at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext.cacheDefinition(AbstractDefinitionContext.Java:264)
    at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext.access$400(AbstractDefinitionContext.Java:44)
    at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext$Loader.construct(AbstractDefinitionContext.Java:230)
    at com.eviware.soapui.support.swing.SwingWorkerDelegator.construct(SwingWorkerDelegator.Java:46)
    at com.eviware.soapui.support.swing.SwingWorker$2.run(SwingWorker.Java:140)
    at Java.lang.Thread.run(Thread.Java:637)
22
samir

definitionsはWSDLのルート要素なので、WSDLをロードしていないようです。

編集:

私はそれをテストしましたが、問題はウェブサーバーにあるようです。 WebサーバーはWSDLをブラウザーに返しますが、多くのHTTPヘッダーのない非常に最小限のHTTP要求を使用しているため、どのツールにも返しません。欠落しているヘッダーの1つはAcceptです。このヘッダーがリクエストに含まれないと、サーバーはHTTP 400 Badリクエストをスローします。

続行する簡単な方法は、ブラウザーでWSDLを開き、wsdlをファイルに保存し、そのファイルをURLからのWSDLではなくsoapUIにインポートすることです。

36
Ladislav Mrnka

Webブラウザでwsdlを開き、.wsdl拡張子で保存してみてください。 SOAP UIプロジェクトのWSDLをこの.wsdlファイルに設定します。これは実際に機能します。

5
Juno123

別の可能性は、SoapUIのサービスURLの最後に?wsdlを追加する必要があることです。必要のないWCFClientに慣れていたので、その1つを手に入れました。

4
Mike
  • はい、最初に「?...... wsever」を「http ...... whatever.svc」リンクに追加したことを確認してください。
    • しかし、それは私の問題を解決しなかった。最初から新しいWCFプロジェクトを作成し、コードを手動でコピーする必要がありました。それはそれを修正しました。幸運を。

そして最も重要な!!!

コードで名前空間を変更するときは、web.configでも名前空間を変更してください!

3

WSO2 ESBにデプロイされたWebサービスをテストしようとしたときに、同じ例外に直面しました。

WSO2はwsdlとwsdl2の両方を生成しました。 wsdl2 URLを渡そうとしましたが、上記の例外が発生しました。クイックグーグルで、wsdl1.1とwsdl2.0の違いの1つが「definitions」要素を「description」に置き換えていることを示しました。また、 SoapUIはwsdl2をサポートしていない であることがわかりました。

したがって、私にとって解決策は、wsdl2ではなくwsdl1urlを使用することでした。

1
arghtype

考えられる可能性は、ブラウザがプロキシを介してWebサービスに到達し、SoapUIがそのプロキシを使用するように構成されていないことです。たとえば、私は企業環境で働いており、IEでFireFoxは外部Webサイトにアクセスできますが、SoapUIは内部Webサービスにのみアクセスできます。

簡単な解決策は、ブラウザーでWSDLを開いて.xmlファイルに保存し、その上でSoapUIプロジェクトを作成するだけです。ただし、WSDLが到達できない外部XSDに依存している場合、これは機能しません。

0
Chris Thornton