7

Requests はローカル環境では正常に機能しますが、デプロイされた環境では機能しません。soapui を含むさまざまなクライアントからリクエストが試行されました。コードは WAS にデプロイされます

軸2

org.apache.axis2.AxisFault: First Element must contain the local name, Envelope , but found definitions
    at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:123)
    at org.apache.axis2.transport.TransportUtils.createSOAPMessage(TransportUtils.java:67)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:354)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
Caused by: org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found definitions
    at java.lang.Throwable.<init>(Throwable.java:67)
4

2 に答える 2

6

これは、サーバーが期待される xml 応答形式を返さないという問題です。これは、不適切なサービス エンドポイント URL を使用したことが原因である可能性があります。

修正するには、Axis コードで使用されている URL が、コードの基になっている WSDL のエンドポイントの URL と一致していることを確認してください。

WSDL での場所:

    <service name="ServiceName">
      <port name="PortName" binding="typens:PortNameBinding">
        <soap:address location="http://yourdomain.com/api/soap/"/>
      </port>
    </service>

コード内の対応する場所は、通常、ServiceNameStubクラス内の 2 つの場所にあります。

    /**
     * Default Constructor
     */
    public ServiceNameStub(
            org.apache.axis2.context.ConfigurationContext configurationContext)
            throws org.apache.axis2.AxisFault {

        this(configurationContext,
                "http://yourdomain.com/api/soap/");

    }

    /**
     * Default Constructor
     */
    public ServiceNameStub() throws org.apache.axis2.AxisFault {

        this("http://yourdomain.com/api/soap/");

    }

これら 2 つの URL が、WSDL ファイルのサービス ポートの soap:address にある URL と一致することを確認してください。

于 2013-06-21T15:11:18.147 に答える
1

はい、同じ問題があり、WSDL をエンドポイント URL で変更することで解決しました。以下のエンドポイント URL を見つける方法を更新しました。

a) Web ブラウザーで WSDL ファイルを開きます。b) 「wsdl:port」タグの下にある「soap:address」を見つけます。c) クライアント コードの location の横にある URL をコピーして貼り付けます。

それでおしまい。

于 2013-05-02T09:49:29.103 に答える