Curl & XML Передача данных

Тема в разделе "PHP", создана пользователем denover, 3 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. denover

    denover Постоялец

    Регистр.:
    5 июн 2008
    Сообщения:
    56
    Симпатии:
    7
    Не пойму в чём загвоздка. Почему ничего не передаётся.
    Вот код:

    PHP:
    index.php
    <?php
        
    function send_xml$url$xml$sync=false ) {
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_TIMEOUT10);
            
    curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
            
    curl_setopt($chCURLOPT_FORBID_REUSE1);
            
    curl_setopt($chCURLOPT_FRESH_CONNECT1);
            
    curl_setopt($chCURLOPT_POST1);
            
    curl_setopt($chCURLOPT_POSTFIELDS$xml);
            
    $data curl_exec($ch);
            if (
    curl_errno($ch)) {
                
    $data=0;
            }
            
    curl_close($ch);
            return 
    $data;
        }
        
    $xml '<member><name>name</name></member>';
        
    var_dumpsend_xml'http://localhost/ping.php'$xml ) );
    ?>
    ping.php
    PHP:
    <?php
      var_dump
    ($_POST);
    ?>
    HTML:
    string(13) "array(0) {
    }
    "
     
  2. wtf?!

    wtf?! Постоялец

    Регистр.:
    29 июл 2009
    Сообщения:
    53
    Симпатии:
    9
    CURLOPT_POSTFIELDS
    This can either be passed as a urlencoded string like 'para1=val1&para2=val2&...' or as an array with the field name as key and field data as value.

    Ни того ни другого я здесь не наблюдаю.

    Добавлено через 57 секунд
    $xml = '<member><name>name</name></member>';

    заменить на что-то вроде:

    $xml['data'] = '<member><name>name</name></member>';
     
  3. denover

    denover Постоялец

    Регистр.:
    5 июн 2008
    Сообщения:
    56
    Симпатии:
    7
    добавил
    PHP:
    var_dumpsend_xml'http://localhost/ping.php'"xml=".$xml ) ); 
    и заработало только после того как убрал
    PHP:
    curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: text/xml"));
    Может я этим хеадером не правильно пользуюсь ?
     
  4. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    а зачем тебе вообще этот хитдер отправлять ?

    PS хз что за обработчик
    но если ты пишешь пингатор ПС то лично у меня работает вот такой код :
    PHP:
    <?php
    //...
    $xml="<?xml version='1.0'?><methodCall><methodName>weblogUpdates.ping</methodName><params><param><value>$title</value></param><param><value>$url</value></param></params></methodCall>";
    $result=send_POST("http://ping.blogs.yandex.ru/RPC2","",$xml);
    //...
    ?>
    PHP:
    <?php
    // инициализирует курл
    // возвращает сессию курла
    function curl_ini(){
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        return 
    $ch;} 
    // отправка POST запроса 
    // $url - куда 
    //$reffer - откуда 
    // $post - сам запрос
    function send_POST($url,$reffer,$post){
        
    $ch=curl_ini();
        
    curl_setopt($chCURLOPT_URL,$url);
        
    curl_setopt($chCURLOPT_REFERER,$reffer);
        
    curl_setopt($ch,CURLOPT_POST1);
        
    curl_setopt($chCURLOPT_POSTFIELDS$post);
        
    $result=curl_exec($ch);
        return 
    $result;}  
    ?>
     
    denover нравится это.
Статус темы:
Закрыта.