簡體   English   中英

無法在PHP中接收JSON POST請求

[英]Unable to receive JSON POST request in PHP

我正在將JOSN對象從Java傳遞到PHP。 我正在使用jdk 1.8 ang WAMP服務器。 以下是Java代碼。

import java.io.IOException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.json.simple.JSONObject;

/**
 *
 * @author PReeeT Dash
 */
public class FromJava 
{
    public static void main(String[] args) throws IOException
    {
        JSONObject json = new JSONObject();
        json.put("someKey", "someValue");    

        CloseableHttpClient httpClient = HttpClientBuilder.create().build();

        try 
        {
            HttpPost request = new HttpPost("http://localhost/PGP/JSONReq/tophp.php");
            StringEntity params = new StringEntity(json.toString());
            request.addHeader("content-type", "application/json");
            request.setEntity(params);
            httpClient.execute(request);
        // handle response here...
        } catch (Exception ex) 
        {
            System.out.println("Error: Cannot Estabilish Connection");        
        } 
        finally 
        {
            httpClient.close();
        }
    }    
}

PHP腳本:

$data = json_decode(file_get_contents("php://input"));
echo($data);

當我運行PHP文件時,它總是顯示一個空白頁面。 誰能幫我了解為什么它不起作用。

當我運行以下PHP代碼時,它將始終執行else條件。

if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        $data = json_decode(file_get_contents("php://input"));
        echo($data);
    }
    else
    {
        echo "XXXXXX";
    } 

我認為這行不通。

PHP腳本不會像WebService那樣“監聽”。 但是,收到請求后,腳本將對其進行處理,並嘗試以HTML(而非Java)“打印”結果。

獲取您的org.apache.http.client實例接收到的響應正文並將其發送到System.out

CloseableHttpResponse response = httpClient.execute(request);
IOUtils.copy(response.getEntity().getContent(), System.out);

對於IOUtils,請使用import org.apache.commons.io.IOUtils; 如果您使用的是Maven,則依賴項為

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.4</version>
</dependency>

您很可能會得到輸出

Catchable fatal error<:  Object of class stdClass could not be converted to string

因為echo($data)不起作用。 json_decode(...)返回一個stdClass。 嘗試

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    // json_decode(..., true) will return an array instead of a stdClass
    $data = json_decode(file_get_contents("php://input"), true);
    var_export($data);
}
else
{
    var_export($_SERVER['REQUEST_METHOD']);
}

代替。

暫無
暫無

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

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