2

私は Axis 1.4 バージョンを使用しており、 org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTaskを使用してクライアントコードを生成しました。ただし、電話をかけようとすると、次のエラーで終了しました。よろしくお願いします

  java.io.IOException: Chunked input stream failed to receive valid chunk size:<?xmlversion="1.0"
        at org.apache.axis.transport.http.ChunkedInputStream.getChunked(ChunkedInputStream.java:155)
        at org.apache.axis.transport.http.ChunkedInputStream.read(ChunkedInputStream.java:87)
        at java.io.FilterInputStream.read(Unknown Source)
        at org.apache.axis.SOAPPart.getAsBytes(SOAPPart.java:453)
        at org.apache.axis.SOAPPart.getAsString(SOAPPart.java:559)
        at org.apache.axis.Message.getSOAPPartAsString(Message.java:412)
        at org.apache.axis.handlers.LogHandler.logMessages(LogHandler.java:89)
        at org.apache.axis.handlers.LogHandler.invoke(LogHandler.java:68)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:190)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)

build.xml のターゲットは、

<target name="generate-java">   
            <wsdl2java 
                url="${resources.dir}/2.0/popsp.wsdl" 
                debug="true" 
                printstacktraceonfailure="true" 
                output="src">
                <mapping namespace="https://www.dhl.au/popweb/gw/ws/schema/2.0/popws" 
                         package="com.soap.autogen"/>
            </wsdl2java>  
      </target>

これをチェックしてください:

    public static boolean isOnline(Context context) {
    boolean isOnline = false;
    try {
        final ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
        if(activeNetwork != null && activeNetwork.isConnected() && activeNetwork.isAvailable()) {
            isOnline = true;
        } else {
            isOnline = false;
        } 
    } catch(Exception e) {
        Log.e(Config.LOG_TAG, e.toString());
        isOnline = false;
    }
    return isOnline;
}

また、そのような権限を AndroidManifest.xml に追加します。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4

2 に答える 2

1

この質問を後で見るユーザーに対処するために、この例外の根本的な原因を見つけました。Axis 1.4 は HTTP 1.0 を使用して、「NoN Chunked Streams」にあるデータを送信します。これらのメッセージがサーバー HTTP 1.1 にヒットすると、データが「チャンク ストリーム」にあると予想されるため、このエラーが発生する可能性があります。このエンコーディングの詳細については、チャンク転送エンコーディングを参照してください。

次の行で構成される deploy-client.wssd というファイルを追加することで、(Axis をアップグレードせずに) 解決しました。

<deployment
xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
  <transport name="http" pivot="java:org.apache.axis.transport.http.CommonsHTTPSender"/> 
</deployment>

これは、デフォルトで HTTP 1.1 を使用する commonsHTTPSender を使用するように Axis に指示します。

于 2012-12-14T08:40:23.987 に答える