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