PHP Curl kullanarak gönderdikten sonra JSON Çözme

0 Cevap php

Ben her yerde araştırdım ve bu anlamaya olamaz.

Benim REST hizmetini test etmek için bir test cURL isteği yazıyorum:

// initialize curl handler
$ch = curl_init();

$data = array(
"products" => array ("product1"=>"abc","product2"=>"pass"));
$data = json_encode($data);

$postArgs = 'order=new&data=' . $data;

// set curl options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postArgs);
curl_setopt($ch, CURLOPT_URL, 'http://localhost/store/rest.php');

// execute curl
curl_exec($ch);

Bu iyi çalışır ve istek benim hizmeti tarafından kabul edilir ve gerektiği gibi $ _POST iki değişken, düzen ve verilerle, doldurulur. Veriler, kodlanmış JSON nesne vardır. Ben $ _POST ['veri'] yazdırmak zaman ve gösterir:

{"products":{"product1":"abc","product2":"pass"}}

Içeri gönderildi ne aynı Hangi beklenen tam olarak ne olduğunu ve

Ben bu json_decode çözmek için çalıştığınızda () hiçbir şey döndürür!

Ben yeni bir dizeyi oluşturmak ve elle bu dizeyi, json_decode () yazarsanız çalışıyor!

Ben denedim:

strip_tags() to remove any tags that might have been added in the http post utf8_encode() to encode the string to the required utf 8 addslashes() to add slashes before the quotes

Hiçbir şey çalışır.

Json_decode () bir dizeden sonra neden çalışmadığını Herhangi bir fikir, bir http yazılan mesajın alınır?

Aşağıda başvuru için istek benim işleme ilgili kısmı:

public static function processRequest($requestArrays) {
    // get our verb
    $request_method = strtolower($requestArrays->server['REQUEST_METHOD']);
    $return_obj = new RestRequest();
    // we'll store our data here
    $data = array();

    switch ($request_method) {
        case 'post':
            $data = $requestArrays->post;
            break;
    }

    // store the method
    $return_obj->setMethod($request_method);

    // set the raw data, so we can access it if needed (there may be
    // other pieces to your requests)
    $return_obj->setRequestVars($data);

    if (isset($data['data'])) {
        // translate the JSON to an Object for use however you want
        //$decoded = json_decode(addslashes(utf8_encode($data['data'])));
        //print_r(addslashes($data['data']));
        //print_r($decoded);
        $return_obj->setData(json_decode($data['data']));
    }
    return $return_obj;
 }

0 Cevap