Php curl отправить XML-файл через SSL как метод GET или метод Pt - PullRequest
1 голос
/ 30 июня 2011

Мне нужно получить данные XML с сервера. Разрешено только два способа отправки данных на сервер «GET» И «PUT» Метод POST - не допускается.

Мой код

    <?php

    set_time_limit(0);
    ini_set('display_errors','1');

    error_reporting(E_ALL);

    $url = 'https://url is here..';
    $fp = fopen(getcwd() . "/ping.xml", "r+");

// Initialize session and set URL.
    $ch = curl_init();

    //curl_setopt($ch, CURLOPT_URL, $url.'?xml='.$xml); 
    curl_setopt($ch, CURLOPT_URL, $url);    

    //GET
    curl_setopt($ch, CURLOPT_PUT, 1); 
    curl_setopt($ch, CURLOPT_FILE, $fp);
    //curl_setopt($ch, CURLOPT_INFILE, $fp);
    //curl_setopt($ch, CURLOPT_INFILESIZE, filesize(getcwd() . "/ping.xml")); 


    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt( $ch, CURLOPT_SSLVERSION, 3 );  
    curl_setopt($ch, CURLOPT_VERBOSE, '1');

    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . "/certs/test_lv.pem");
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "test_lv");

    curl_setopt($ch, CURLOPT_SSLKEY, getcwd() . "/certs/test_lv.key");
    curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "test_lv");

    //curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml','correlationId :'.date("y-m-d-h-m-s")));
    curl_setopt($ch, CURLOPT_HEADER, 1);
    // Get the response and close the channel.
    $response = curl_exec($ch);
    echo curl_error($ch);
    print_r($response);
    echo '<br>end';
    curl_close($ch);
?>

Я провел весь день, подключаясь к серверу, и теперь он работает. Я пытаюсь отправить XML-файл методом Put
Данные XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<Ping>
<Value>Test</Value>
</Ping>

Это не работает У меня есть эта ошибка:

HTTP / 1.1 100 Продолжить HTTP / 1.1 500 Внутренняя ошибка сервера Длина содержимого: 0 Сервер: Jetty (6.1.21) конец

Ответы должны быть:
Получил pong.xml-s

<?xml version="1.0" encoding="UTF-8"?>
<B4B xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://test.net/valid/hgw-response.xsd">
<Pong from="EE">
<Value>Test</Value>
</Pong></B4B>

Спасибо за советы

P.S Как я могу отправить XML-файл с помощью метода GET .. Я пытаюсь сделать это

$xml = '<?xml version="1.0" encoding="UTF-8"?>
        <Ping>
            <Value>Test</Value>
        </Ping>';

curl_setopt($ch, CURLOPT_URL, $url.'?xml='.$xml);

Это тоже не работа для меня.

...