当前位置: 首页 > 知识库问答 >
问题:

从Android向php服务器发送数据

吕成业
2023-03-14

我正在尝试从Android向我的php服务器提交数据。然而,所有的答案似乎都使用了不推荐使用的ApacheHTTP库。我不想用它,当我试着用的时候,它不起作用。

现在它似乎什么也没做。它似乎连接到web服务器,但服务器不写入任何数据。如果我只是用浏览器访问url,它会写入一个文件。

php代码是

<?php
// get the "message" variable from the post request
// this is the data coming from the Android app
$message=$_POST["message"]; 
// specify the file where we will save the contents of the variable message
$filename="androidmessages.html";
// write (append) the data to the file
file_put_contents($filename,$message."<br />",FILE_APPEND);
// load the contents of the file to a variable
$androidmessages=file_get_contents($filename);
// display the contents of the variable (which has the contents of the file)
echo $androidmessages;
?>

然后在Android studio中,我会在按下按钮后放入所有代码

    loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            loadingProgressBar.setVisibility(View.VISIBLE);
            loginViewModel.login(usernameEditText.getText().toString(),
                    passwordEditText.getText().toString());


            System.out.println("This is a test");

            Thread thread = new Thread(new Runnable() {

                @Override
                public void run() {
                    try  {
                        //Your code goes here

                        URL url = null;
                        OutputStream out = null;
                        String urlString = "https://mywebsite.net/php_script.php";
                        String data = "HelloWorld"; //data to post

                        try {
                            url = new URL(urlString);
                            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                            urlConnection.setRequestMethod("POST");
                            urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                            urlConnection.setDoOutput(true);
                            out = new BufferedOutputStream(urlConnection.getOutputStream());
                            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
                            writer.write(data);
                            writer.flush();
                            writer.close();
                            out.close();
                            urlConnection.connect();

                        } catch (IOException e) {
                            System.out.println(e.getMessage());
                            e.printStackTrace();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            thread.start();

        }
    });
}

共有2个答案

卫乐童
2023-03-14

你可以使用JSON和Volley!

<?php
$data = json_decode(file_get_contents('php://input'), true);
$filename="androidmessages.html";
file_put_contents($filename,$data["message"]."<br />",FILE_APPEND);
$reponse = array("message" => $androidmessages=file_get_contents($filename));
echo json_encode($reponse);
?>

在android(Kotlin)中:

private fun sendHtmlRequest(view: View){
    val jsonobj = JSONObject()
    var url = "https://URL.php"

    jsonobj.put("message", "test message")

    val que = Volley.newRequestQueue(context)
    val req = JsonObjectRequest(Request.Method.POST, url, jsonobj,
        Response.Listener { response: JSONObject ->
            val messageResponse = response.getString("message")
            println("response: $messageResponse")
        }, Response.ErrorListener{
            println("Error")
        }
    )

    que.add(req)
}
仉运乾
2023-03-14

您的PHP代码正在$\u POST中查找名为“message”的变量

$message=$_POST["message"]; 

然而,在Android代码中,您只需将消息数据写入http请求主体。

我建议研究Volley,它是一个HTTP库,允许轻松地发出HTTP请求。这个答案可能也会有所帮助。

 类似资料:
  • 我们有一个场景,(UDP客户端程序)向(UP服务器)发送UDP数据包 TCP在数据通信开始之前和结束之后执行握手。UDP没有。 那么,运行在上的应用程序失败的原因是否是上的服务器程序没有准备好(关闭)接收UDP数据包?

  • 问题内容: 我有MySQL数据库服务器 我需要通过JSON更新和检索MySQL服务器中的数据 所以,我想知道如何做到这一点,并且让这个示例语句感到困惑: 这意味着我需要先编写与PHP服务器连接的应用程序代码,然后再编写php以连接数据库。 问题答案: 要将数据发送到服务器,您可以执行以下操作: 然后发送让说: 因此服务器上的AddAccelerationData.php文件为: 这是我最近使用的示

  • 问题内容: 我想使用Android将数据发送到我的php页面。我该怎么做? 问题答案: 您可以使用AndroidHttpClient进行GET或POST请求: 创建一个AndroidHttpClient来执行您的请求。 创建一个HttpGet或HttpPost请求。 使用setEntity和setHeader]方法填充请求。 对您的请求使用客户端上的execute方法之一。

  • 我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用示例的时间戳将其发送给连接的多个客户端。我使用多线程来支持多个客户端。我希望每10秒向客户端发送一次时间。但在我的代码中,客户端在收到第一个数据后停止。如何让客户端连续接收数据。我尝试在客户端添加while循环,但这并不可行。有什么建议吗 以下是示例代码:服务器端: 客户端: 我的输出: 客户端所需输出:

  • 我用这个代码发送后数据到服务器使用android。有人能给我任何想法或您的示例如何发送POST或GET json数据到服务器TOMCAT...!步骤提示: > 创建HttpClient 向给定URL发出POST请求 构建jsonObject 转换JSONObject到JSON到String 设置json为StringEntity 设置http帖子实体 设置一些头来通知服务器内容的类型 对给定URL

  • 我一直在做这个项目,其中一个部分包括从Raspberry向我的服务器发送一些数据。但它不能正常工作,我不知道为什么。我试图通过删除“urllib2”并使用“request”来修复错误。但徒劳的是,一切都没有改变。如果有人能帮助我,我会非常感激的。谢谢! PHP代码: python代码: