0

メッセージング アプリケーションのセットアップは非常にシンプルです。EditText ボックスからテキストを取得し、データベースに追加する php ページにパラメーターとして渡すだけです。1 単語のエントリに最適です。EditTextボックスにスペースを入れた瞬間、機能しません。私はまだAndroidでかなり新しいです。これがどのように起こっているのか、私には本当にわかりません。これがどのように起こるか知っている人はいますか?

これが私の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";

        }

        }

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

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を使用していることに注意してください。

于 2012-04-24T16:40:05.117 に答える