2

URL Androidでいくつかのスペースを実行しようとしたときにエラーが発生しました。これはコードです:

              String strUrlLoginFullpath = "";


              strUrlLoginFullpath = strUrlMain+"exl?u="+strUser+"&p="+strPass+"&t=1";



              URL url = new URL(strUrlLoginFullpath);
              publishProgress(40);

              //membuka koneksi
              URLConnection urlConn = url.openConnection();
              urlConn.setConnectTimeout(50000);
              urlConn.setReadTimeout(50000);

              //digunakan untuk menangkap nilai dari server
              BufferedReader in = new BufferedReader(
                      new InputStreamReader(
                              urlConn.getInputStream()));
              publishProgress(60);
              String inputLine;
              int i=0;
              while ((inputLine = in.readLine()) != null)
              {     
                  Log.v("Login",i+", return:" +inputLine+"; url: "+strUrlLoginFullpath);
                  if(i == 5)
                      {
                        Log.v("Login","RESULT >"+i+", return:" +inputLine+"; url: "+strUrlLoginFullpath);
                        str2 = inputLine;
                      }
                  i++;
              }
              in.close();


              publishProgress(80);

              publishProgress(100);
          } 
          catch (MalformedURLException e) 
          {
                Log.v("KxL", "MalformedURLException=" + e.toString());
          } 
          catch (IOException e) 
          {
                Log.v("KxL", "IOException=" + e.toString());
          } 
          return null;
    }

ご覧のとおり、ログイン検証を行うコマンド strUrlLoginFullpath = strUrlMain+"exl?u="+strUser+"&p="+strPass+"&t=1";がありますが、 strUserに空白が含まれていることがあり、プログラムが実行されない可能性があります。この問題を解決する方法は?

4

4 に答える 4

3

URLEncoder.encode()スペースやその他の特殊文字が正しくエンコードされるように、URL パラメータ値を変更します。

例:

strUrlLoginFullpath = strUrlMain + "exl?u=" + URLEncoder.encode(strUser, "UTF-8") +
    "&p=" + URLEncoder.encode(strPass, "UTF-8") + "&t=1";
于 2013-04-09T07:42:25.550 に答える
1

URL にスペースを使用することはできません。代わりに、それらを URL エンコードする必要があります。すべてのスペースを に置き換える%20と、反対側に正しく表示されるはずです。

他の特殊文字 (URL で特殊と見なされる) がこれらの文字列のいずれかに含まれる可能性がある場合 (少なくともパスワードの場合は可能性が高いと思われます)、適切な URL エンコード関数を使用して文字列全体を URL エンコードし、問題またはセキュリティの問題。

URL のクエリ文字列でパスワードを渡すというセキュリティ上の問題を無視します。

于 2013-04-09T07:43:22.017 に答える