0

次のような状況があります。Java でsoaplibを使用して Python で記述された Web サービスを使用する必要があります。Eclipse で問題なく Web サービスをインポートできますが、Web サービスのメソッドを呼び出そうとすると、次のエラー メッセージが表示されます ...

    軸障害
     faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
     障害サブコード:
     faultString: org.xml.sax.SAXParseException: コンテンツはプロローグでは許可されていません。
     faultActor:
     障害ノード:
     障害の詳細:

そこで、soaplib を使用して独自の小さな Web サービスを構築して、これを試してみました。これは、soaplib と内部 http サーバーで実行されている Web サービス サーバーです。簡単な方法

    ソープライブラリをインポート
    from soaplib.core.service import rpc, DefinitionBase
    from soaplib.core.model.primitive import 文字列、整数
    from soaplib.core.server import wsgi
    soaplib.core.model.clazzインポート配列から
    soaplib.core.service インポート ソープから

    クラス HelloWorldService(DefinitionBase):
        @soap(文字列,_returns=文字列)
        def say_hello (自分、名前):
            results = 'こんにちは、%s'%name
            print('Hello, %s' % name)
            結果を返す

    __name__=='__main__' の場合:
        試す:
            from wsgiref.simple_server import make_server
            soap_application = soaplib.core.Application([HelloWorldService], 'tns')
            wsgi_application = wsgi.Application(soap_application)
            サーバー = make_server('pc-frank', 7789, wsgi_application)
            server.serve_forever()
        ImportError を除く:
            print "エラー: サンプル サーバー コードには Python >= 2.5 が必要です"

これは私が使用しようとしているJavaクラスです

    java.rmi.RemoteException をインポートします。
    import static java.lang.System.out;
    tns.* をインポートします。

    公開クラステスト{
        public static void main(String[] args){
            ApplicationProxy ws = 新しい ApplicationProxy();
            試す {
                String test = ws.say_hello("world");
                out.println(テスト);
            } キャッチ (RemoteException e) {
                // TODO 自動生成された catch ブロック
                e.printStackTrace();
            }
        }   
    }

どんな助けでも本当に感謝しています!

4

1 に答える 1

0

リクエストまたはレスポンスが解析されていないようです。両方をキャプチャして、検証ツールで実行します。オンラインには、XML を貼り付けて検証できない理由を確認できるツールがたくさんあります。

于 2012-03-20T13:20:40.530 に答える