0

XML 形式を返す Web サービスを実行しようとしていますが、3G ネットワークで FileNotFoundException をスローすることがあり、WIFI ネットワークで正常に動作することがあります。

接続のコードは次のとおりです。

      @Override
    protected ArrayList<NewsItemVO> doInBackground(Void... args) {


        try {
            URLConnection conn = new URL(feedUrl).openConnection();
            conn.setConnectTimeout(20000);
            conn.setReadTimeout(20000);
            InputStream in = new BufferedInputStream(conn.getInputStream());
          }
}

これは例外をスローする行です

 InputStream in = new BufferedInputStream(conn.getInputStream());
4

2 に答える 2

0

ドキュメントに従って:

指定されたパス名が示すファイルを開く試みが失敗したことを通知します。

この例外は、指定されたパス名を持つファイルが存在しない場合に、FileInputStream、FileOutputStream、および RandomAccessFile コンストラクターによってスローされます。ファイルが存在するが何らかの理由でアクセスできない場合にも、これらのコンストラクターによってスローされます。たとえば、書き込みのために読み取り専用ファイルを開こうとした場合などです。

あなたのコードはほとんどの場合は機能していて、機能していない場合もあるため、ConnectionTimeOut が発生していると思われます。

問題をさらに掘り下げるには、以下の手順に従ってください。

1) long 変数 t1 を宣言し、try ブロックの前に System.currentTimeMillis() に初期化します。もう 1 つの long 変数 t2 を宣言し、finally ブロックの後で現在の時刻を取得します。違いを確認してください。差が接続タイムアウト設定よりも大きい場合は、接続タイムアウトが発生していると判断できます。

2) catch 句で完全な例外スタック トレースを出力します。

3) この例外が発生した場合は、ファイルのアクセス許可を確認し、読み取り/実行アクセス許可でファイルにアクセスできることを確認します。

もう1つ-wifiでは正常に動作し、3Gでは動作しないため、接続タイムアウトが根本的な原因であると思われます。

于 2015-08-20T12:43:37.147 に答える