2013-05-14 153 views
0

我開發了一個servlet,並試圖通過android應用程序訪問它。這是我的異步類的重要組成部分。 'params [0]'是作爲參數傳入的網址未找到Java IO文件異常

URL url; 
BufferedReader reader = null; 
String s = ""; 
try { 
    url = new URL(params[0]); 
    URLConnection con = url.openConnection(); 
     reader = new BufferedReader(new InputStreamReader(
     con.getInputStream())); 
    String line = ""; 
    while ((line = reader.readLine()) != null) { 
     s = s + line; 
    } 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

這個工作大部分時間。但有時,我得到一個java.io.FileNotFoundException 當我採取相同的網址,並嘗試它在瀏覽器中的作品,但從我的應用程序,它不工作,無論我嘗試多少次。這是我的logcat:

05-14 19:35:51.852: W/System.err(767): java.io.FileNotFoundException: http://192.168.10.105:8080/CarpoolServer/EditProfileServlet?name=anna&yob=1977&gender=Female&major=Architecture&uni=N/A&occupation=Software Development&hobby1=Basketball&hobby2=Reading&hobby3=Football&email=jad_naoum%40hotmail.com&phone=70202018&from11=Beirut&from12=Beirut&from13=Mousseitbeh&to11=Beirut&to12=Beirut&to13=Mazraa&days1=SAT&time_from1=3:21AM&time_to1=4:21PM&car=true 
05-14 19:35:51.852: W/System.err(767): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186) 
05-14 19:35:51.852: W/System.err(767): at com.jad.carpooling.EditProfile$Async.doInBackground(EditProfile.java:416) 
05-14 19:35:51.862: W/System.err(767): at com.jad.carpooling.EditProfile$Async.doInBackground(EditProfile.java:1) 
05-14 19:35:51.862: W/System.err(767): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
05-14 19:35:51.862: W/System.err(767): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
05-14 19:35:51.862: W/System.err(767): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
05-14 19:35:51.862: W/System.err(767): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
05-14 19:35:51.872: W/System.err(767): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
05-14 19:35:51.872: W/System.err(767): at java.lang.Thread.run(Thread.java:856) 

任何想法?



我想通了。看來我沒有正確編碼URL。網址中有一個空格。當我編碼它,它的工作。 感謝您的幫助

+3

我猜URL是一個內部URL。你確定,該應用程序不嘗試通過移動網絡連接?這意味着,該文件不存在,因爲Android設備不在您的無線網絡中。 – MalaKa

+0

你說:(** 1 **)「*這在大多數情況下都適用。*」然後是(** 2 **)「*但是從我的應用程序來看,無論我嘗試了多少次,它都不起作用*「似乎與我自相矛盾。 –

+0

「這工作大部分時間,但有時候我得到一個例外」 當我得到例外,它不再工作 –

回答

1

您必須用%20替換所有空格 所以這裏是代替空格的代碼。

strUrl = strUrl.replace(" ", "%20"); 
+0

strUrl = strUrl.replace(「」,「%20」); –