PHP cURL üzerinden XML ve diğer post parametreleri göndermek nasıl

1 Cevap php

Benim REST API XML göndermek için aşağıdaki kodu kullandım. $ Xml_string_data uygun XML içeren ve iyi mypi.php geçirilir:

    //set POST variables
    $url = 'http://www.server.cu/mypi.php'; 
    $fields = array(
                'data'=>urlencode($xml_string_data)
            );

    //url-ify the data for the POST
    $fields_string = "";
    foreach($fields as $key=>$value) 
    { 
      $fields_string .= $key.'='.$value.'&'; 
    }
    rtrim($fields_string,'&');

    echo $fields_string;

    //open connection
    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch,CURLOPT_HTTPHEADER,array (
        "Expect: "
    ));

    //execute post
    $result = @curl_exec($ch);

Ama ne zaman ben diğer alan ekledim:

    $fields = array(
      'method' => "methodGoPay",
      'data'=>urlencode($xml_string_data)
    );

O iş için durdu. Mypi.php ben hiç bir fazla POST parametreleri ararken yok!

Eğer, ne bir cURL isteği XML ve diğer post parametreleri göndermek için yapmak bana söyleyebilir misiniz?

Herhangi kütüphanelerini kullanarak önermiyoruz Lütfen, ben düz PHP bunu başarırsınız wan't.

1 Cevap

Bu komut ile yanlış bir şey görmüyorum. Bu büyük olasılıkla mypi.php ile ilgili bir sorun var.

Eğer fazladan & var sonunda. Belki de bu sunucuyu karıştırır? Rtrim $ field_string değişmez ve kesilmiş dize döndürür.

PostFields böyle basitleştirilmiş olabilir,

$fields = array(
      'method' => "methodGoPay",
      'data'=> $xml_string_data // No encode here
);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));