次のような状況があります。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(); } } }
どんな助けでも本当に感謝しています!