PHP-cURL eşdeğer piton isteği dönüştürmek

0 Cevap php

Ben bir URL'ye POST isteği yolluyorum. Bu Python düzgün çalışıyor ama php-curl, ben her zaman (sunucu tarafından beklendiği gibi yani benim POST verileri değil) kötü bir istek hatası alıyorum

Python kodu: (. Düzgün çalışır 200 OK)

import httplib, urllib, json

def SendRequest(param1):
    url = "api.xyz.com"
    body = {"version": "1.0", "data":[{"param1":param1, "age":35}]}
    jsonBody = json.dumps(body)

    headers = {"Content-type": "application/json",
               "Accept": "application/json; charset=utf8"}
    conn = httplib.HTTPConnection(url)
    conn.request("POST", "/api/?client_id=xx-xx-xx", jsonBody, headers)
    response = conn.getresponse()

php-cURL kodu (çalışmaz. 406 Hatalı istek hatası)

function sendCurlRequest($param1)
{
    $payload = preparePayload($param1); 
    $url = "http://api.xyz.com/api/?client_id=xx-xx-xx"; 
    $jsonResponse = executePOSTRequest($url, $payload);
    $response = json_decode($jsonResponse);
}

function preparePayload($param1)
{
    $payload = array("version" = "1.0",
                     "data" => array(array("param1" => $param1,
                                           "age" => 35
                                          )
                                    ),
                    );

    $jsonPayload = json_encode($payload);
    return $jsonPayload;
}

function executePOSTRequest($url, $payload)
{
    $newlines = array("\r", "\n", " ");
    $url = str_replace($newlines, '', $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HTTPHEADERS,array('Content-Type:application/json; Accept: application/json; charset=utf8'));

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($ch);
}

Ben cURL benim kullanımında bir hata olduğunu biliyorum. Lütfen öneririz.

Güncelleme: Sunucu bekler çünkü php çift dizinin kullanılması bu formatta JSON dize (POST verisi)

{
"version": "1.0",
"data":
[{"param1":name, "age":35},{"param1":name,"age":60}]
}

Python, ben dict listesini kullanıyorum; php Ben sadece dizilerin dizi olduğunu düşünüyorum.

0 Cevap