簡體   English   中英

如何在php中接收POST

[英]How to receive POST in php

我正在嘗試從我的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變量名稱是什么?

我絕對沒有使用android的經驗,但是我猜測是某種數組還是json,可以通過使用<?php echo var_dump($_POST); ?>創建一個頁面來查看其發送的內容<?php echo var_dump($_POST); ?> <?php echo var_dump($_POST); ?>並將POST請求發送到頁面。

看起來您正在發送二進制數據,而不是name-value post參數。

在您的php代碼中嘗試以下操作: echo file_get_contents("php://input"); 並查看其打印內容。

另外,您可以將HTTPClientRestHTTPClient from loopj用作android客戶端。

像CarlosAllende一樣,我也沒有Android方面的經驗。 但是希望這對您有幫助。

這就是你在'$ _POST'中得到的東西嗎?

 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的對象無法轉換為字符串”。 因此,如果我是正確的,它將嘗試將對象放入您的$ _POST數組中,並且無法將其轉換為字符串。 而是在$ _POST數組中得到錯誤。

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM