【问题标题】:How to send url paremeters to php server and get back response to android如何将 url 参数发送到 php 服务器并返回对 android 的响应
【发布时间】:2015-12-29 06:32:27
【问题描述】:

我正在尝试创建一个基本应用程序,我想在其中将请求从 android 发送到 php 服务器,如下所示:http://www.eg.com/eg.php?a=blabla:blablabla:bla

然后当我得到这些数据时,我想做这样的事情:

if(isset($_GET['a'])) {

    $a = $_GET['a'];

    $array = explode(':', $a);

    $data1 = $array[0];

    if($data1 == "blabla") {

        Send response to android here.. 
    }
} 

问题是我不知道如何在 android 和 php 服务器之间发送数据。我看了很多答案,但大多数都发送 json 数据或使用折旧的 apache http 库,或者没有谈论任何关于 php 服务器端的内容,或者特定于那个人的 secnario。请你给我一个关于如何做到这一点的非常明确的答案,谢谢:)

如果有一个答案已经涵盖了这个问题,请在投票否决我之前向我提供该答案的 url。

【问题讨论】:

  • 用 ? 发送附加到 url 的数据和名称值对,因为我可以看到您在 php 上仅使用 GET 方法,并且您可以通过 json 对象接收并在 android 端解析它
  • 是的,我不介意使用 json 对象,但我不知道如何在 android 端执行此操作,然后我不知道如何将响应从 php 发送回 android 并在 android 上接收该数据。你能给我举个例子吗? :)
  • stackoverflow.com/questions/32226832/…这个帮助你使用namevalue对
  • 顺便说一下这个$a = isset($_GET['a']);不会返回一个数组,它返回一个布尔值,如果你想爆炸一个布尔值,你会遇到问题
  • 是的,我的意思是 $a = $_GET['a'];但我只是从 if 语句中复制并粘贴了 $_GET 部分,忘记删除 isset 部分;)

标签: php android http get url-parameters


【解决方案1】:

在cmets和数小时的研究的帮助下,我终于找到了一个简单的解决方案:

您可以使用以下方法简单地调用此方法:

HashMap<String , String> postDataParams = new HashMap<String, String>();

postDataParams.put("name", "value");

performPostCall("URL", postDataParams);

Java 代码:

public String performPostCall(String requestURL,
                                   HashMap<String, String> postDataParams) {

        URL url;
        String response = "";
        try {
            url = new URL(requestURL);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(15000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);


            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os, "UTF-8"));
            writer.write(getPostDataString(postDataParams));

            writer.flush();
            writer.close();
            os.close();
            int responseCode=conn.getResponseCode();

            if (responseCode == HttpsURLConnection.HTTP_OK) {
                String line;
                BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));
                while ((line=br.readLine()) != null) {
                    response+=line;

                    Log.e("Res:", response);
                }
            }
            else {
                response="";

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return response;
    }

    private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
        StringBuilder result = new StringBuilder();
        boolean first = true;
        for(Map.Entry<String, String> entry : params.entrySet()){
            if (first)
                first = false;
            else
                result.append("&");

            result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
            result.append("=");
            result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
        }

        return result.toString();
    }

在 php 方面,您可以使用以下方法获取数据:

$_POST['name']

您只需执行以下操作即可发回响应:

echo "response here..";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-13
    • 2011-05-15
    • 1970-01-01
    • 2013-12-13
    • 2011-06-08
    • 2023-04-01
    • 2013-10-01
    相关资源
    最近更新 更多