0

サーブレットを開発しましたが、Android アプリケーションからアクセスしようとしています。これが私の非同期クラスの重要な部分です。「params[0]」は、パラメーターとして渡される URL です。

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 が発生します。同じ URL を取得してブラウザで試してみると動作しますが、アプリケーションからは何度試しても動作しません。これが私の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 を正しくエンコードしていなかったようです。URL にスペースがあります。私がそれをエンコードしたとき、それはうまくいきました。助けてくれてありがとう

4

1 に答える 1