java - 如何将字符串从 Android 发送到 PHP?我的 PHP 脚本应该如何处理它?

标签 java php android

我需要将从android中的EditText获取的字符串发送到PHP,用作查询数据库的id。所以,我从 EditText 中得到了如下字符串:

childIDVal = childID.getText().toString();
 Toast.makeText(getApplicationContext(),childIDVal,Toast.LENGTH_LONG).show();
 // To do : transfer data to PHP
 transferToPhp(childIDVal);

那么,我的 transferToPhp() 应该包含什么?还有 php 代码是:

<?php 

if( isset($_POST["ChildID"]) ) {
 $data = json_decode($_POST["ChildID"]);
 $data->msg = strrev($data->msg);

 echo json_encode($data);

}

还好吗?我是 android 和 Php 的新手,所以我现在需要一些帮助。谢谢!

最佳答案

我建议您使用 AsyncTask,它使用 HttpClient 到达您服务器中现有的 PHP 文件:

    /*Sending data to PHP and receives success result*/
    private class AsyncDataClass extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        HttpParams httpParameters = new BasicHttpParams();
        HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
        HttpConnectionParams.setSoTimeout(httpParameters, 5000);
        HttpClient httpClient = new DefaultHttpClient(httpParameters);
        HttpPost httpPost = new HttpPost(params[0]);
        String jsonResults = "";
        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            // SENDING PARAMETERS WITH GIVEN NAMES
            nameValuePairs.add(new BasicNameValuePair("paramName_1", params[1]));
            nameValuePairs.add(new BasicNameValuePair("paramName_2", params[2]));
            // ...
            httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpClient.execute(httpPost);
            jsonResults = inputStreamToString(response.getEntity().getContent()).toString();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonResults;
    }

    // DO SOMETHING BEFORE PHP RESPONSE
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    // DO SOMETHING AFTER PHP RESPONSE
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if(result.equals("") || result.equals(null)){
            return;
        }

        // Json response from PHP
        String jsonResult = returnParsedJsonObject(result);

        // i.e.
        if (jsonResult.equals("some_response") {
            // do something
        }
    }

    // READING ANSWER FROM PHP
    private StringBuilder inputStreamToString(InputStream is) {
        String rLine = "";
        StringBuilder answer = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        try {
            while ((rLine = br.readLine()) != null) {
                answer.append(rLine);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return answer;
    }
}

// GET ALL RETURNED VALUES FROM PHP
private String returnParsedJsonObject(String result){
    JSONObject resultObject;
    String returnedResult = "0";
    try {
        resultObject = new JSONObject(result);
        returnedResult = resultObject.getString("response");
        String value1 = resultObject.getString("value1");
        String value2 = resultObject.getString("value2");
        //...
        // do something with retrieved values
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return returnedResult;
}

要发送一些参数,请使用:

AsyncDataClass asyncRequestObject = new AsyncDataClass();
asyncRequestObject.execute("server_url", param1, param2,...);

希望对你有帮助。

关于java - 如何将字符串从 Android 发送到 PHP?我的 PHP 脚本应该如何处理它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48162602/

相关文章:

按键排序的Java数据结构

php - 使用 php 将图像从 blob 字段下载到硬盘

php - 如何在局域网上部署 PHP 应用程序?

android - 为什么我不能真正遵循这个 Android Studio 教程?

单击按钮时 Android 布局高度未更新

java - 仅在 jUnit 的情况下获取 java.lang.NoSuchMethodException : io. jsonwebtoken.impl.crypto.MacProvider.generateKey

java - 不断检查子弹是否触及节点

java - 如何迭代和修改 Java 集?

php - php在特定时间间隔获得负值的时差

android - Cordova Android 在 Linux 上安装