如何在PHP中接收POST

时间:2015-01-21 04:54:20

标签: java php android

我正在尝试从我的Android客户端向php端发送数据,代码如下:

(我已经从互联网上的各种来源构建了这个代码,所以我不确定这里是否一切都很好)

private void postJSON(String myurl) throws IOException {
        java.util.Date date= new java.util.Date();
        Timestamp timestamp = (new Timestamp(date.getTime()));
        try {
            JSONObject parameters = new JSONObject();
            parameters.put("timestamp",timestamp);
            parameters.put("jsonArray", new JSONArray(Arrays.asList(makeJSON())));
            parameters.put("type", "Android");
            parameters.put("mail", "xyz@gmail.com");
            URL url = new URL(myurl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //  conn.setReadTimeout(10000 /* milliseconds */);
            //  conn.setConnectTimeout(15000 /* milliseconds */);
            conn.setRequestProperty( "Content-Type", "application/json" );
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            OutputStream out = new BufferedOutputStream(conn.getOutputStream());
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
            writer.write(parameters.toString());
            writer.close();
            out.close();

            int responseCode = conn.getResponseCode();
            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println(response.toString());

        }catch (Exception exception) {
            System.out.println("Exception: "+exception);
        }
    } 

我对这条线很困惑:

writer.write(parameters.toString());

基本上我只向php端发送一个字符串。我如何在那里收到它?什么是POST变量名?

3 个答案:

答案 0 :(得分:1)

我绝对没有使用android的经验,但是我猜测某种类型的数组或json,你可以通过在其上创建一个带有<?php echo var_dump($_POST); ?>的页面并将POST请求发送到页。

答案 1 :(得分:1)

看起来您正在发送二进制数据而不是name-value发布参数。

在你的php代码中尝试这个:echo file_get_contents("php://input");并查看它打印的内容。

另外,您可以使用HTTPClientRestHTTPClient from loopj作为Android客户端。

答案 2 :(得分:1)

像CarlosAllende一样,我没有Android的经验。但希望这对你有所帮助。

这就是你在&#39; $ _ POST&#39; ?

 Response Code : 200 01-21 10:46:44.969: I/System.out(21561): <br /> 
 <b>Catchable fatal error</b>: Object of class stdClass could not be converted to string in 
<b>/opt/lampp/htdocs/Pdrive/digital_anniversaries/wordpress-3.9.1/wordpress/auth‌​enticate_user.php</b> on line <b>15</b><br /> 

如果是这样,那是一个致命的致命错误,告诉我们类stdClass的对象无法转换为字符串&#39;。所以,如果我是正确的,它试图将对象放入你的$ _POST数组,并且它无法将其转换为字符串。而是你在$ _POST数组中得到错误。

希望这会有所帮助