Tôi đã xem xét rất nhiều trước khi đăng câu hỏi này để xin lỗi nếu nó ở trên một bài đăng khác và đây chỉ là câu hỏi thứ hai của tôi ở đây để xin lỗi nếu tôi không định dạng câu hỏi này một cách chính xác.Đọc JSON POST bằng cách sử dụng PHP
Tôi có một dịch vụ web thực sự đơn giản mà tôi đã tạo cần phải có giá trị bài và trả về một mảng được mã hóa JSON. Đó là tất cả làm việc tốt cho đến khi tôi đã nói với tôi sẽ cần phải gửi dữ liệu biểu mẫu với một loại nội dung của ứng dụng/json. Kể từ đó, tôi không thể trả lại bất kỳ giá trị nào từ dịch vụ web và đó chắc chắn là điều cần làm với cách tôi lọc các giá trị bài đăng của họ.
Về cơ bản trong thiết lập địa phương của tôi, tôi đã tạo ra một trang thử nghiệm nào sau đây -
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
curl_setopt($curl, CURLOPT_URL, 'http://webservice.local/'); // Set the url path we want to call
$result = curl_exec($curl);
//see the results
$json=json_decode($result,true);
curl_close($curl);
print_r($json);
Trên webservice Tôi đã này (tôi đã tước ra một số chức năng) -
<?php
header('Content-type: application/json');
/* connect to the db */
$link = mysql_connect('localhost','root','root') or die('Cannot connect to the DB');
mysql_select_db('webservice',$link) or die('Cannot select the DB');
if(isset($_POST['action']) && $_POST['action'] == 'login') {
$statusCode = array('statusCode'=>1, 'statusDescription'=>'Login Process - Fail');
$posts[] = array('status'=>$statusCode);
header('Content-type: application/json');
echo json_encode($posts);
/* disconnect from the db */
}
@mysql_close($link);
?>
Về cơ bản tôi biết rằng đó là do các giá trị $ _POST không được thiết lập nhưng tôi không thể tìm thấy những gì tôi cần phải đặt thay vì $ _POST. Tôi đã thử json_decode ($ _ POST), file_get_contents ("php: // input") và một số cách khác nhưng tôi đã chụp trong bóng tối một chút.
Mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn, Steve
Cảm ơn Michael cho sự giúp đỡ, đó là một bước nhất định về phía trước bây giờ đã ít nhất có một repsonse khi tôi echo bài .... ngay cả khi nó là null
cập nhật CURL -
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_URL, 'http://webservice.local/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
cập nhật php trên trang đó dữ liệu được đưa lên -
$inputJSON = file_get_contents('php://input');
$input= json_decode($inputJSON, TRUE); //convert JSON into array
print_r(json_encode($input));
Như tôi nói ít nhất tôi thấy một câu trả lời ngay bây giờ trước khi nó trả lại một trang trống
Không chắc chắn những gì thất bại, nhưng IMHO, bước đầu tiên sẽ được toprint ra nội dung của $ _POST để xem những gì trong đó. Nếu dữ liệu ở đó, nó khá dễ dàng để đối phó với chúng. Nếu $ _POST trống, ít nhất bạn biết vấn đề ở đâu. – Sylverdrag
Nó phù hợp với tôi! – jruzafa