2012-04-24 9 views
0

私は、メッセージングアプリケーション用にかなりシンプルな設定をしています。私は単にEditTextボックスからテキストを取得し、それをデータベースに追加するPHPページにパラメータとして渡します。それは1つの単語のエントリのために完全に動作します。 EditTextボックスにスペースを入れた瞬間、動作しません。私はまだAndroidでかなり新しいです。私は本当にこれがどう起こっているのか理解していません。誰でもこのことがどう起こるか知っていますか?ここでEditText.getText()をサーバーに送信します。単一の単語でのみ動作します。どうやって?

は私のonClickメソッドです:

public void sendMessage(View v) { 
Log.d("tag", "XXXXXXXXXXXXXXXXXXXXXX"); 
     final SharedPreferences prefs = PreferenceManager 
       .getDefaultSharedPreferences(getBaseContext()); 

     username = prefs.getString("username", "null"); 



where = prefs.getString("chat", "null"); 
     message = (EditText) findViewById(R.id.inptbox); 

     function = new Functions(); 
     Editable messagetext; 
messagetext = message.getText(); 


       response = function.sendMessage(username, where, messagetext.toString()); 
String theresponse = ""; 
theresponse = response; 
       if (theresponse.compareTo("0") == 0) { 
        Toast.makeText(getApplicationContext(), "Success!", 
          Toast.LENGTH_SHORT).show(); 
        //message.setText(null); 

       } else if (response.compareTo("9") == 0) { 

        // userent.setText("nine"); 

       } 

    } 

マイfunction.sendMessage:

public String sendMessage(String username, String where, String string){ 

     BufferedReader in = null; 
     String data = null; 
     try{ 


      HttpClient client = new DefaultHttpClient(); 
      URI website = new URI("http://abc.com/user_send.php?username="+username+"&where="+where+"&message="+string); 

      HttpPost post_request = new HttpPost(); 
      post_request.setURI(website); 


      HttpGet request = new HttpGet(); 

      request.setURI(website); 
      //executing actual request 

         //add your implementation here 
      HttpResponse response = client.execute(request); 

      in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
      StringBuffer sb = new StringBuffer(""); 
      String l = ""; 
      String nl = System.getProperty("line.separator"); 
      while ((l = in.readLine()) != null) { 
       sb.append(l+nl); 

      } 
      in.close(); 
      data = sb.toString(); 


return data; 
     }catch (Exception e){ 
      return "ERROR"; 

     } 

     } 

は、どのように私はこの問題を解決するに取り掛かる必要がありますか?

答えて

2

「URLセーフ」にするためにメッセージをエンコードする必要があります。スペース(およびその他の特殊文字)はURLに表示することはできません。これはアドレスバーに入力すると、ブラウザが%20のスペースを置き換える理由です。 )(function.sendMessageに次のように試してみてください。

URI website = new URI("http://abc.com/user_send.php?username="+username+"&where="+where+"&message="+URLEncoder.encode(string, "UTF-8")); 

お知らせ終わりURLEncoderの使用。

+0

ああ!それは非常に意味をなさない。私はそれについて考えなかったとは信じられません。 – EGHDK

+0

URLEncodeの下に赤い線が表示されています。 "メソッドURLEncoder(String、String)は、タイプ関数のために定義されていません" – EGHDK

+0

ああ、おっと!私はこのメソッドを含めるのを忘れていました。これは 'URLEncoder.encode(文字列、" UTF-8 ")'でなければなりません。上記の回答も更新します。それについて申し訳ありません! – Rain

関連する問題