3

従来のSOAP認証サービスを呼び出すための10年前のJavaコードがあります。WSDLはRPC:ENCODEDであり、多くのタイプミスが含まれています。古いコードをAxis1.4か何かに簡単に変換したいと思っていましたが、問題が発生しました。私が見たものはすべて、WSDLを使用したかったのです。誰かがこれを欠陥のあるWSDLを必要としない最新のコードに変換するのを手伝ってもらえますか?

これがSOAP呼び出しセクションです。

    SOAPMappingRegistry soapmappingregistry = new SOAPMappingRegistry();
    BeanSerializer beanserializer = new BeanSerializer();

    soapmappingregistry.mapTypes(Constants.NS_URI_SOAP_ENC, new QName(
            "urn:xml-soap-session-demo", "authenticationresult"),
            AuthenticationResult.class, beanserializer, beanserializer);
    Call call = new Call();
    call.setSOAPMappingRegistry(soapmappingregistry);
    call.setTargetObjectURI("urn:Security");
    call.setMethodName("authenticate");
    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
    Vector<Object> vector = new Vector<Object>();
    vector.addElement(new Parameter("app", String.class, "PHS", null));
    vector.addElement(new Parameter("user", String.class, userName, null));
    vector.addElement(new Parameter("password", String.class, password, null));
    vector.addElement(new Parameter("encryption", Integer.class, new Integer(0), null));
    call.setParams(vector);
    Response response = null;
    URL endpointURL = new URL(endpoint);
    response = call.invoke(endpointURL, "");
    if (!response.generatedFault()) {
        Parameter parameter = response.getReturnValue();
        Object obj = parameter.getValue();
    ...
    }

どうもありがとう。

4

1 に答える 1

2

さて、ほとんどの石鹸フレームワークは、WSDL標準に大きく依存しています。Axis、CXF、SpringWSなど。SpringWSを試すことができると思います。WSDL全体を知らない、または使用したくない場合(ただし、ペイロードをどのようにエンコードするかはわかっている)、2、3回節約できました。

しかし、サービスがtype-o:sでいっぱいの場合、なぜそれを移植したいのですか?古いクライアント、古いサービス-サービスがtype-o:sのないものに置き換えられたら、それをそのままにしてコードをアップグレードしてみませんか?とにかく醜いものになってしまうとは思いません。

于 2012-05-11T22:23:51.993 に答える