【问题标题】:Not getting value after whitespace while passing variable from android to php将变量从 android 传递到 php 时,空格后没有得到值
【发布时间】:2016-09-20 17:54:11
【问题描述】:

我正在尝试将一个变量从 android 传递给 php,而在 php 中接收值在空格之后没有得到值。我正在传递变量,

private void register(String txtname) {
String urlSuffix = "?name="+txtname;
 Log.d("unmae",txtname);
    class RegisterUser extends AsyncTask<String, Void, String>{
        ProgressDialog loading;


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            loading = ProgressDialog.show(UserRegister.this,"Please Wait","Loading...");
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
           loading.dismiss();
                      }

        @Override
        protected String doInBackground(String... params) {
            String s = params[0];
            BufferedReader bufferReader = null;
            try {
                URL url = new URL(REGISTER_URL+s);
                HttpURLConnection con= (HttpURLConnection) url.openConnection();
                bufferReader=new BufferedReader(new InputStreamReader(con.getInputStream()));
                String result;
                result = bufferReader.readLine();
                return result;

            } catch (Exception e) {

                return null;
            }
        }
    }

        RegisterUser ru = new RegisterUser();
        ru.execute(urlSuffix);
}

在 PHP 方面

$uname = $_GET['name'];

记录变量时,输出是这样的 例如:unmae:first second

php 端的 echo 是这样的

例如:$uname = $_GET['name']; echo $uname; output:first

【问题讨论】:

  • 发生这种情况是因为我认为参数中不能有空格,尝试用符号替换空格,然后在 php 中找到该符号并将其设为空格
  • 将其替换为“%20”
  • 不清楚变量名或值中是否有空格。你没有展示你在做什么。为什么我们必须猜测?如果它在txtname 中,则 url 参数及其值还有其他“禁止”字符。你应该先对整个字符串进行 url 编码。
  • @Tony:任何其他选项我都有很多这样的变量。
  • 你能显示应用程序发送到服务器的最终 URL 吗?

标签: php android


【解决方案1】:

尝试对您用于名称的String 变量进行编码。这将防止坏字符或用 "+""%20"

替换空格
ru.execute(URLEncoder.encode(urlSuffix, "utf-8"));

或者更好的是,使用 URI 构建器

// This will get the final URL for request
String uri = Uri.parse(REGISTER_URL)
                .buildUpon()
                .appendQueryParameter("name", txtname)
                .build().toString();

【讨论】:

  • 放入后 ru.execute(URLEncoder.encode(urlSuffix, "utf-8"));然后从服务器端获取 消息
  • 它说了什么?
【解决方案2】:
  1. 你应该使用 URLEncoder

    String urlSuffix= URLEncoder.encode(name, "UTF-8");
    
  2. 指定方法为 GET

    String URL = "http://android.com/android_test/httpget.php? +name=urlSuffix"
    
     URL url=new URL(ur_url);
    urlConnection= (HttpURLConnection) url.openConnection();
    urlConnection.setRequestMethod("GET");
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 2018-10-22
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多