проблемы с cURL

Shicoo

Новичок
проблемы с cURL

Вернее проблемы не с cURL а с пониманием работы :(

А вобщем есть такой вот кусок кода:
PHP:
        $sock = fsockopen($UniShopHost, 80, $errno, $errstr, 30);
        if (!$sock) die("$errstr ($errno)\n");
        $data="request=".urlencode($request);
        fputs($sock, "POST /".$UniShopSite."/index.php?t=request HTTP/1.0\r\n");
        fputs($sock, "Host: ".$UniShopHost."\r\n");
        fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n");
        fputs($sock, "Content-length: " . strlen($data) . "\r\n");
        fputs($sock, "Accept: */*\r\n");
        fputs($sock, "\r\n");
        fputs($sock, "$data\r\n");
        fputs($sock, "\r\n");
        $headers="";
        while($str=trim(fgets($sock, 4096))) $headers.="$str\n";
        $headers.="\n";
        $buffer='';
        while(!feof($sock)) $buffer.=fgets($sock, 4096);
        fclose($sock);
Как переделать этот код под cURL?

Заранее всем спасибо
 

Shicoo

Новичок
Читать пробовал, но что-то не получается.
Я сделал так:
PHP:
        $header[] = "Host: ".$UniShopHost."\r\n";
        $header[] = "Content-type: application/x-www-form-urlencoded\r\n";
        $header[] = "Content-length: " . strlen($data) . "\r\n";
$header[] = "Accept: */*\r\n";
        $header[] = $data;
        
        $ch = curl_init($UniShopHost.$UniShopSite."index.php?t=request");
        curl_setopt($ch, 'CURLOPT_RETURNTRANSFER', 1);
        curl_setopt($ch, 'CURLOPT_HEADER', 1);
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');
		curl_setopt($ch, CURLOPT_HTTPHEADER, $header);        
        $buffer = curl_exec($ch);
        echo $buffer;
        
        
        curl_close($ch);
но ничего не получается
 

kvf77

Red Devil
Shicoo

ну наверное надо писать как выглядит твое "ничего не получается"
 

magic

lancer
PHP:
function post_url($url, $data) {
    $vars = '';

    foreach($data AS $key => $value) {
        if ($key && $value) $vars .= "$key=$value&";
        else return 1;
    }
    if (function_exists('curl_init')) {
        $ch = curl_init(); 
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER , 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 120);
        $output = curl_exec($ch);
        curl_close ($ch); 
    } else {
        $output = 'CURL functions are not available';
    }

    return $output;
}
А теперь сравни со своим кодом.
 

Shicoo

Новичок
Вот ответ от предыдущего кода:

HTTP/1.1 200 OK
Date: Tue, 25 Oct 2005 15:02:19 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Transfer-Encoding: chunked
Content-Type: text/html

XML error: Invalid document end at line 1


А должен выдаваться xml файл
 

magic

lancer
Тебе выдало результат работы скрипта на другом сервере. Может данные какие-то ему нужно послать.
 

Shicoo

Новичок
в переменной $data содержится такая информация(все это в одну строку):

request=%3Ccatalog_request_package%3E%0D%0A++++%3Cinfo%3E%0D%0A
++++++++%3Cpackage%3E%0D%0A++++++++++++%3Cid%3E6454543573579812179357431%
3C%2Fid%3E%0D%0A++++++++++++%3Ccreate_timestamp%3E2005-
10-25+02%3A25%3A49%3C%2Fcreate_
timestamp%3E%0D%0A++++++++++++%3Clanguage%3EEN%
3C%2Flanguage%3E%0D%0A++++++++++++%3Cdefault_
language%3EEN%3C%2Fdefault_language%3E%0D%
0A++++++++%3C%2Fpackage%3E%0D%0A++++++++%
3Ceshop%3E%0D%0A++++++++++++%3Cversion%3Eto+be+
specified%3C%2Fversion%3E%0D%0A++++++++++++%3Cid%3Esimplyphone%
3C%2Fid%3E%0D%0A++++++++++++%3Ckey%3Eto+be+specified%3C%
2Fkey%3E%0D%0A++++++++++++%3Chost%3Esimplephone.lu%3C%2Fhost%
3E%0D%0A++++++++++++%3Cip%3E127.0.0.1%3C%2Fip%3E%
0D%0A++++++++%3C%2Feshop%3E%0D%0A++++++++%3Ccatalog_lib%3E%0D%0A++++++++++++%3Cversion%3E1.0.0.
1%3C%2Fversion%3E%0D%0A++++++++%3C%2Fcatalog_lib%3E%0D%0A++++++++%3Cuser%3E%0D%
0A++++++++++++%3Clogin%3Eto+be+specified%3C%2Flogin%3E%0D%0A++++++++++++%
3Cpassword%3Eto+be+specified%3C%2Fpassword%3E%0D%0A++++++++%3C%2Fuser%3E%0D%0A++++%
3C%2Finfo%3E%0D%0A++++%3Crequest%3E%0D%0A++++++++%3Cfunction_name%3Eget_home_page_data%
3C%2Ffunction_name%3E%0D%0A%0D%0A++++%3C%2Frequest%3E%0D%0A%3C%2Fcatalog_request_package%3E%0A

на выходе должно получится что-то типа такого:

PHP:
<catalog_answer_package>
    <info>
        <package>
            <id>1130239594</id>
            <create_timestamp>2005-10-25 02:26:34</create_timestamp>
            <answer_timestamp>2005-10-25 14:26:34</answer_timestamp>
            <process_time>0:00:00.000</process_time>
            <language>EN</language>
            <cache></cache>
        </package>
        <catalog>
            <version>1.0.0.2</version>
            <host>127.0.0.1</host>
        </catalog>
    </info>
    <answer>
        <answer_info>
            <records_count>1</records_count>
            <error>
                <code>0</code>
                <level_name>None</level_name>
                <level_code>0</level_code>
                <short_description></short_description>
                <full_description></full_description>
            </error>
        </answer_info>
        <row>
            <number>1</number>
            <result>4</result>
        </row>
    </answer>
</catalog_answer_package>
 
Сверху