2017-01-03 4 views
-2

私はURLからのgetInputStreamにしようとしています、接続応答コードが200ですが、私はのgetInputStreamしようとすると、私は例外FileNotFoundExceptionを取得していますが、ここに私のコードは次のとおりです。java.io.FileNotFoundException()

url = new URL("http://..."); 
connection = (HttpURLConnection) url.openConnection(); 
connection.setDoOutput(true); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
connection.setRequestMethod("POST"); 
int status = connection.getResponseCode(); 
if(status >= 400){ 
    request = new OutputStreamWriter(connection.getOutputStream()); 
    request.write(params); 
    request.flush(); 
    request.close(); 
    String line; 
    InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
    BufferedReader reader = new BufferedReader(isr); 
    StringBuilder sb = new StringBuilder(); 
    while ((line = reader.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
} 

スタックトレース:

W/System.err: java.io.FileNotFoundException: http://... 
W/System.err:  at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:238) 
W/System.err:  at com.apps.topinformers.sharedreading.AddGroupMembersFragment.postText(AddGroupMembersFragment.java:112) 
W/System.err:  at com.apps.topinformers.sharedreading.AddGroupMembersFragment.access$000(AddGroupMembersFragment.java:26) 
W/System.err:  at com.apps.topinformers.sharedreading.AddGroupMembersFragment$PostDataAsyncTask.doInBackground(AddGroupMembersFragment.java:65) 
W/System.err:  at com.apps.topinformers.sharedreading.AddGroupMembersFragment$PostDataAsyncTask.doInBackground(AddGroupMembersFragment.java:55) 
W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:295) 
W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
W/System.err:  at java.lang.Thread.run(Thread.java:818) 

何の問題がある、と私はそれをデバッグすることができますか?

+1

質問を編集し、クラッシュに関連するJavaスタックトレース全体を投稿することをお勧めします。 – CommonsWare

+0

@CommonsWareは – Mohammad

+1

の編集を参照してくださいEJPに同意します - これはあなたの要求から404の応答コードに適合します。 [OkHttp](https://github.com/square/okhttp/blob/master/samples/guide/src/main/java/okhttp3/recipes/PostStreaming)など、別のHTTPクライアントAPIを使用する方が簡単です。 .java)。 – CommonsWare

答えて

2

接続応答コードが200

いいえ、それはないからです。このコードには、応答コードをチェックするものは何もありません。 A FileNotFoundExceptionは404の応答コードを意味します。

NB setDoOutput(true)はPOSTにメソッドを設定します。

url = new URL("http://..."); 
connection = (HttpURLConnection) url.openConnection(); 
connection.setDoOutput(true); 
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
connection.setRequestMethod("POST"); 

request = new OutputStreamWriter(connection.getOutputStream()); 
request.write(params); 
request.flush(); 
request.close(); 
String line; 

int status = connection.getResponseCode(); 
if(status < 400) { 

    InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
    ... 
} else{ 
    InputStreamReader isr = new InputStreamReader(connection.getErrorStream()); 
    ... 
} 

エラーストリームの実装コードといくつかの問題があることを見せてくれた:あなたは自分で、私は次のように応答をチェックした@EJPするクレジットと

+0

'200を返す' connection.getRespondeCode() 'を確認しました – Mohammad

+0

あなたがしなかったこのコードではありません。 – EJP

+0

私はそれが接続を確実にするために使用して、それを削除しました。私はエラーを処理するか、キャッチしたくない、私はそれを解決したい! – Mohammad

-2

がいることを設定する必要はありません。私が要求しているURL。

+0

'FileNotFoundException'があれば、レスポンスコードは200ではありませんでした。それは不可能です。これらのステートメントの1つまたは他は真実ではありません。あなたは、まったくゼロ証拠を反対に提供しています。 – EJP

+0

@EJPの回答が編集されましたが、とにかく問題が解決されました。私は13時間の連続したコーディングの後、気を散らしました。 – Mohammad

+0

これは質問された質問には答えません。あなたの質問を削除することをお勧めします。それは当初は決して意味をなさない。 – EJP

関連する問題