2016-10-29 93 views
1

我是Java和Android Studio的初學者。我已經編寫了Android Studio和Wamp作爲服務器和Genymotion作爲模擬器的代碼。所有代碼工作正常,我可以通過使用我的.php文件與mysql交互java.io.FileNotFoundException:使用真實服務器時

然後,我決定將代碼傳輸到真正的服務器。

,但我得到這個錯誤: java.io.FileNotFoundException:http://burj.1shahrvand.com/Burj/BikerLogin.php

文件是否可用check it here但我得到該文件未找到

的代碼是這樣的例外:

String uri = rp.getUri(); 
    if(rp.getMethod().equals("GET")){ 
     uri += "?" + rp.getEncodedParams(); 
    } 


    HttpURLConnection connection; 
    try { 
     URL url = new URL(uri); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestMethod(rp.getMethod()); 
     if (rp.getMethod().equals("POST")){ 
      connection.setDoOutput(true); 
      connection.setDoInput(true); 
      OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); 
      writer.write(rp.getEncodedParams()); 
      writer.flush(); 


     } 
     BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     String line; 
     StringBuilder sb = new StringBuilder(); 

     while ((line = reader.readLine()) != null) { 
      sb.append(line); 

     } 
     return sb.toString(); 


    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     Log.i("HESAM Original", e.getMessage()); 
     e.printStackTrace(); 
    } 


    return null; 

我很感謝您的幫助!

回答

1

如果您在服務器使用404或410狀態碼進行響應後致電getInputStream,您將得到FileNotFoundException

如果您想避免該異常,請檢查響應狀態代碼是否爲2xx代碼。如果不是,則使用getErrorStream而不是getInputStream

+0

的問題是文件是否可用 - 當我用資源管理器或檢查鉻沒有問題 - 當我從我的應用程序請求時,我不可用。 –

+0

檢查服務器端日誌 –

+0

我得到403錯誤。我給管理員寫了一張票。我會在這裏公佈答案。 –

0

在我的情況下,我的Cpanel中有一個選項。這是MOD安全,只需關閉它,15分鐘後我的應用程序正常工作。

+0

你可能想問問你自己爲什麼在第一位。因爲通過禁用它你可能已經關閉了其他的安全。 – Kiskae

0

只要你需要添加端口名稱(:8080),在URL字符串本地主機IP地址,像我一樣:

String login_url = " http://192.168.0.136:8080/login.php ";

+0

這聽起來在許多層面上都是錯誤的。你爲什麼要連接到**本地**主機IP地址?端口號通常默認爲8080--但這是一個配置方面。我認爲你的「答案」有很多盲目的猜測。 – GhostCat

相關問題