2017-05-03 120 views
1

HttpUrlConnection拋出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

哪一行拋出這個錯誤?發佈完整的logcat – Denny

+0

最後一次拋出異常 –

+0

我已添加登錄最後一個catch塊...其中異常e顯示該異常 –

回答

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

之前閱讀流使用我提到的代碼,如果狀態是好的,那麼獲取流其他流得到錯誤流,以供進一步查詢 –

+0

在什麼意思?....是它的InputStreamReader? –

0

您的網址可能有些問題,您可以編碼然後重試。

你可以試試:

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 –

相關問題