所以我使用POST將數據從Java發送到PHP API。如何從Java REST API請求解碼PHP中的JSON?
我想要做的是在POST請求中發送一個特定的變量給API,然後在我的PHP中使用它的值。但是目前在PHP中,$_POST["variable1"]
是空的。
腳本肯定會被調用,因爲每次發送郵件時都會發送一封電子郵件,但PHP並未讀取POST變量。
我的Java看起來是這樣的:
String line;
StringBuffer jsonString = new StringBuffer();
try {
URL url = new URL("https://www.x.com/api.php");
String payload = "{\"variable1\":\"value1\",\"variable2\":\"value2\"}";
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
writer.write(payload);
writer.close();
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = br.readLine()) != null) {
jsonString.append(line);
}
br.close();
connection.disconnect();
}
這是基於:How to send Request payload to REST API in java?
而且PHP API包含此:
if (isset($_POST["variable1"]) && isset($_POST["variable2"])) {
//Send email containing POST values
//Send 200 success header
} else {
//Send error email
//Send 400 error header
}
目前,我每一次我得到了錯誤的電子郵件運行Java代碼。所以它發送到API,但是這個值沒有被正確讀取。
我用Java正確發送它嗎?或者我錯過了PHP中的某些東西?我需要做些什麼來解碼它嗎?
感謝您的任何幫助。我一直在研究這一點,似乎無法解決問題。
該死的你快了xD拿我的勳章! – Andreas 2014-10-01 20:14:07
您可以請擴展此。然後,我如何從$ entity中檢索值?我試過'$ entity-> variable'和'$ entity - > {「variable」}',但都沒有工作。 – user3420034 2014-10-01 22:29:56
看看'json_decode()'[documentation](http://php.net/manual/en/function.json-decode.php)。第二個參數決定是否返回關聯數組。這應該工作'$實體['變量1']'。 – pgiecek 2014-10-01 22:42:02