2017-05-03 9 views
1

HttpUrlConnection throw FileNotFound例外.JsonオブジェクトがDataOutputStreamで渡されます。この問題を解決するには? なぜFileNotFound例外がスローされるのですか?HttpUrlConnection POSTリクエストでFileNotFound例外をスローすると、このエラーを解決する方法はありますか?

public final String apiCall(String pUrl,JSONObject jsonObject) { 

    try { 

     URL url = new URL(pUrl); 
     HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 


     httpURLConnection.setRequestMethod("POST"); 
     httpURLConnection.setRequestProperty("Content-Type", "application/json"); 
     httpURLConnection.setDoOutput(true); 
     httpURLConnection.connect(); 

     DataOutputStream wr = new DataOutputStream(httpURLConnection.getOutputStream()); 
     wr.writeBytes(jsonObject.toString()); 
     wr.flush(); 
     wr.close(); 

     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); 
     try{ 
      StringBuilder stringBuilder = new StringBuilder(); 
      String line; 

      while((line = bufferedReader.readLine())!= null) { 
       stringBuilder.append(line); 
      } 

      return stringBuilder.toString(); 

     } catch (Exception e) { 
      return "ERROR"; 
     } finally{ 
      bufferedReader.close(); 
      httpURLConnection.disconnect(); 
     } 
    }catch (Exception e) { 
     return "ERROR"; 
    } 
} 
+0

このエラーがスローされますどのようなライン? – Denny

+0

最後にcatch catch例外を投げる –

+0

最後のcatchブロックにログを追加しました...例外の例外を示す例外 –

答えて

0

私は過去に全く同じ問題がありました。私は間違ったパラメータで問題を抱えていました。しばらく過ごした後、私は自分の問題を解決することができました。間違った電子メールとパスワードをサービスに渡すことは正しかったし、サーバーもこれらのパラメータを消費していた。なぜなら、それが500コードを返す理由であるエラー(電子メールとパスワード)があったからだ。だから、私はそれが200だった場合、私はgetInputStream()メソッドを使用し、それ以外の場合はgetErrorStream()メソッドを呼び出した状態コードを確認した。このようにして、エラーのプロパティを持つストリームを取得しました(このプロパティにはエラーの詳細が含まれています)。私が使用したコードは以下の通りです

if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) { 
     in = new BufferedReader(new InputStreamReader(conn.getErrorStream())); 
    } else { 
     in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    } 

最初の応答コードは、最初にチェックすることでした。それはHTTP_OKコードで述べたようにそれは意味がない場合は、エラーストリームがサーバーから受信されたエラーを確認するために行くことを意味します。希望が役立ちます。

+0

を投稿しますが、このコードを置く場所は –

+0

です。ステータスがOKならストリームを取得し、それ以外の場合はエラーストリームを取得する –

+0

何の意味ですか?それはInputStreamReaderですか? –

0

あなたのURLに多少の問題がある場合は、エンコードしてから再試行できます。

あなたは試すことができます:

protected static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%"; 
String encodedUrl = Uri.encode(url, ALLOWED_URI_CHARS); 
HttpURLConnection conn = (HttpURLConnection) new URL(encodedUrl).openConnection(); 
+0

フォーマットを修正してください。 – Pharaoh

+0

はまだFileNotFoundExceptionを示しています –

関連する問題