2017-03-05 12 views
0

は、私は多くの場所が答え が最初ありがとう発見していない見つけるAndroidのエラーにFileNotFoundException

public static void sendOldHttpRequest(final String address, final IHttpCallbackListenet httpCallbackListenet) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      HttpURLConnection urlConnection = null; 
      try { 
       Log.i("tzf", "run: "+address); 
       URL url = new URL(address); 

       urlConnection = (HttpURLConnection) url.openConnection(); 
       InputStream inputStream = urlConnection.getInputStream(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 
       StringBuffer response = new StringBuffer(); 
       String line; 
       while ((line = reader.readLine()) != null) { 
        response.append(line); 
       } 

       httpCallbackListenet.onFinish(response.toString()); 

       reader.close(); 
       inputStream.close(); 

      } catch (Exception e) { 
       httpCallbackListenet.onError(e); 
      } finally { 

       if (urlConnection!=null){ 
        urlConnection.disconnect(); 
       } 
      } 
     } 
    }).start(); 
} 

エラーログ:

03-05 20:59:49.835 17180-17268/com.example.tangzhifeng.paperairplane W/System.err: java.io.FileNotFoundException: https://moment.douban.com/api/stream/date/2017-03-05 
03-05 20:59:49.835 17180-17268/com.example.tangzhifeng.paperairplane W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238) 
03-05 20:59:49.835 17180-17268/com.example.tangzhifeng.paperairplane W/System.err:  at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210) 
03-05 20:59:49.836 17180-17268/com.example.tangzhifeng.paperairplane W/System.err:  at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:25) 
03-05 20:59:49.836 17180-17268/com.example.tangzhifeng.paperairplane W/System.err:  at com.example.tangzhifeng.paperairplane.util.HttpUtil$2.run(HttpUtil.java:61) 
03-05 20:59:49.836 17180-17268/com.example.tangzhifeng.paperairplane W/System.err:  at java.lang.Thread.run(Thread.java:818) 
+0

ほとんどの場合と同様にかなっを行うことができ

、Androidは 'HTTPSからHTTP 404応答になっている:// moment.douban.com/API /ストリーム/日付/を2017-03-05' 。何故かはわからない。 – CommonsWare

+0

ファイルが保護されている可能性があります。または、ファイルを取得しようとしているボットが、ユーザーとは異なる結果を受け取る。 HTMLファイルを取得しようとします。 google.com(または他のサイト)へのストリームを開き、インデックスファイルを取得しようとする – Zoe

答えて

2

HttpURLConnectionは、400以上のHTTPステータスコードに対してFileNotFoundExceptionをスローします。 getResponseCode()を使用すると、コンテンツを読み取る前に応答ステータスコードを確認できます。多分あなたの要求は悪いですか?または、要求されたリソースへのアクセス権がありません。あなたはこの

InputStream inputStream; 
int responseStatusCode = urlConnection.getResponseCode(); 
if(status != HttpURLConnection.HTTP_OK) { 
    inputStream = urlConnection.getErrorStream(); 
    //Get more informations about the problem 
} else { 
    inputStream = urlConnection.getInputStream(); 
} 
+0

はい、ブラウザにアクセスできますが、Androidには興味がありません。 –

+0

マニフェストファイル? Bari

+0

HTTP403の前に追加する権限があります –

関連する問題