"First name", "last_name" => "last name", "email"=>"emailgmail, com", "addresses" => array ( "address1" => "some address", "city" => "city", "country" => "CA", "first_name" => "Mother", "last_name" => "Lastnameson", "phone" => "555-1212", "province" => "ON", "zip" => "123 ABC" ));$data_string = json_encode($data);$ch=curl_init($url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer"=>$data_stri" /> "First name", "last_name" => "last name", "email"=>"emailgmail, com", "addresses" => array ( "address1" => "some address", "city" => "city", "country" => "CA", "first_name" => "Mother", "last_name" => "Lastnameson", "phone" => "555-1212", "province" => "ON", "zip" => "123 ABC" ));$data_string = json_encode($data);$ch=curl_init($url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer"=>$data_stri" />

Làm Thế Nào Để Post Dữ Liệu Json Với Curl Php?

$url = "url_to_post";$data = array( "first_name" => "First name", "last_name" => "last name", "email"=>"email

Bạn đang xem: Làm thế nào để post dữ liệu json với curl php?

email.com", "addresses" => array ( "address1" => "some address", "city" => "city", "country" => "CA", "first_name" => "Mother", "last_name" => "Lastnameson", "phone" => "555-1212", "province" => "ON", "zip" => "123 ABC" ));$data_string = json_encode($data);$ch=curl_init($url);curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer"=>$data_string));curl_setopt($ch, CURLOPT_HEADER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Content-Type:application/json", "Content-Length: " . strlen($data_string) ));$result = curl_exec($ch);curl_close($ch);Và ngơi nghỉ trang không giống, tôi đang lấy tài liệu bài viết.

print_r ($_POST);Đầu ra là

HTTP/1.1 200 OKDate: Mon, 18 Jun 2012 07:58:11 GMTServer: ApacheX-Powered-By: PHP/5.3.6Vary: Accept-EncodingConnection: closeContent-Type: text/htmlArray ( ) Vì vậy, tôi không sở hữu và nhận được tài liệu cân xứng ngay cả tại sever của bản thân mình, sẽ là mảng trống. Tôi ý muốn thực thi REST bằng json tại http://docs.shopify.com/api/customer#create


php json rest curl
— fan dùng1463076 mối cung cấp
2
Quý khách hàng khá đầy đủ chuyển đổi $datathanh lịch $data_stringthực hiện json_encode()??? Không thấy loại mã này ...
Xin lỗi tôi dường như không viết tại đây tuy nhiên trong mã của mình, tôi sẽ viết code$ data_opes = json_encode ($ data); codevới làm cầm cố nào nhằm viết mã trong những bình luận? trong các bình luận tôi quan yếu viết ngắt cái và làm cho rứa như thế nào nhằm viết mã?
— dùng1463076

Xem thêm: Bộ Sưu Tập 11 Hiệu Ứng Jquery Đẹp Cho Web Site, 60 Hiệu Ứng Jquery Cực Đẹp Cho Thiết Kế Website

Câu trả lời:


192

Quý khách hàng đang gửi json không đúng đắn - tuy thế trong cả lúc nó là đúng chuẩn, các bạn sẽ quan trọng bình chọn bằng cách thực hiện print_r($_POST)( hiểu vì sao tại chỗ này ). Thay vào kia, bên trên trang thứ nhị của bạn, bạn cũng có thể đem thử dùng đến bằng cách sử dụng file_get_contents("php://input"), nó sẽ chứa json POSTed . Để xem dữ liệu nhận ra sống định hình dễ đọc hơn, hãy thử điều này:

emang đến "".print_r(json_decode(file_get_contents("php://input")),1)."";Trong mã của khách hàng, nhiều người đang chỉ ra Content-Type:application/json, tuy nhiên chúng ta không mã hóa tất cả dữ liệu POST - chỉ cực hiếm của trường POST "khách hàng hàng". Ttuyệt vào kia, hãy có tác dụng một chiếc gì đấy như vậy này:

$ch = curl_init( $url );# Setup request to lớn skết thúc json via POST.$payload = json_encode( array( "customer"=> $data ) );curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );curl_setopt( $ch, CURLOPT_HTTPHEADER, array("Content-Type:application/json"));# Return response instead of printing.curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );# Send request.$result = curl_exec($ch);curl_close($ch);# Print response.emang đến "$result";Sidenote: Quý Khách rất có thể hưởng lợi từ các việc sử dụng thư viện của mặt thiết bị bố nuốm vị từ bản thân giao tiếp với API Shopify.


Hừ! Tôi vẫn tranh đấu về lý do tại sao tôi không sở hữu và nhận được tài liệu qua $ _POST. Vấn đề là tôi đang buộc phải thực hiện php: // input đầu vào như các bạn sẽ nói. Cảm ơn.
Vì vậy, chúng ta không nhất thiết phải xác minh ví dụ đó là từng trải POST? Theo luồng thông tin có sẵn do CURLOPT_POSTFIELDS được đặt?
Câu vấn đáp này ở đâu lúc tôi kiếm tìm kiếm nó cả tuần trước? Bây tiếng tôi tìm thấy nó sau khoản thời gian tôi phải trường đoản cú tìm kiếm ra!
Sidenote: Nếu chúng ta gửi JSON và ý muốn ngóng JSON là ý kiến, thì một số trong những API cũng thử khám phá thiết lập cấu hình một số loại ý kiến curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type:application/json", "Accept:application/json"));(nếu không bạn có thể gửi JSON, nhưng lấy XML có tác dụng câu trả lời).