Прошу помощи по курлу (cURL)

R
На сайте с 10.11.2009
Offline
0
7903

Проблемы при отправки xml пакетов через POST. Если длина пакета <= 1024, то все гуд, если размер больше хотя бы на один, то все получаю ошибку №18 transfer closed with outstanding read data remaining.

Вот функция отправки

function _xmlHttpsReq2($addr, $xml){
echo "\n".$addr;
echo "\n".$xml;
echo "\n".strlen($xml);
//if(strlen($xml)>1000)
//$xml = substr($xml,0,1025);
//$header[] = "Host: mydomain.test";
$header[] = "Content-type: text/xml; charset:utf-8";
$header[] = "Content-length: ".strlen($xml);
$ch = curl_init($addr);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$xml);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header );

$result=curl_exec($ch);
if( curl_errno($ch) != 0 ) {
$info = curl_getinfo($ch);
foreach($info as $name=>$value)
echo "\n".$name.'='.$value;
echo "\nres= ".$result;
echo "\n".'CURL_error: ' . curl_errno($ch) . ', ' . curl_error($ch);
return 'CURL_error: ' . curl_errno($ch) . ', ' . curl_error($ch);
};
$info = curl_getinfo($ch);
foreach($info as $name=>$value)
echo "\n".$name.'='.$value;
echo "\nres= ".$result;
curl_close($ch);
return $result;
}

Вот результат отработки функции без ошибки (пакет менее 1024):

content_type=text/xml;charset=UTF-8

http_code=200

header_size=149

request_size=393

filetime=-1

ssl_verify_result=19

redirect_count=0

total_time=0.267345

namelookup_time=4.5E-5

connect_time=0.026682

pretransfer_time=0.155036

size_upload=258

size_download=17549

speed_download=65641

speed_upload=965

download_content_length=-1

upload_content_length=-1

starttransfer_time=0.267161

redirect_time=0

А вот при ошибке (пакет более 1024):

content_type=text/xml;charset=UTF-8

http_code=200

header_size=257

request_size=158

filetime=-1

ssl_verify_result=19

redirect_count=0

total_time=0.226429

namelookup_time=5.0E-5

connect_time=0.029792

pretransfer_time=0.158446

size_upload=1206

size_download=0

speed_download=0

speed_upload=5326

download_content_length=-1

upload_content_length=1206

starttransfer_time=0.184043

redirect_time=0

CURL_error: 18, transfer closed with outstanding read data remaining

[Удален]
#1

$header[] = "Content-type: text/xml; charset:utf-8";

$header[] = "Content-length: ".strlen($xml);

вот это в принципе не прередавайте совсем :)

J
На сайте с 02.02.2009
Offline
53
#2

мб достигли максимального размера загрузки?

R
На сайте с 10.11.2009
Offline
0
#3
bearman:
$header[] = "Content-type: text/xml; charset:utf-8";
$header[] = "Content-length: ".strlen($xml);

вот это в принципе не прередавайте совсем :)

Попробывал не помогло, все такой же результат.:(

Rednik добавил 10.11.2009 в 18:02

jumash:
мб достигли максимального размера загрузки?

Так в том то и дело, что не то что до загрузки, до отправки пакета не доходит дело.

[Удален]
#4

вспомнил я эту гадкую ошибку ...

изза курловской излишней "заботы".

впиши

$header[] = "Expect: ";

у меня в библиотеке это автоматически правится))

http://xp.helldude.ru/repositories/entry/dudecurl/trunk/libs/DudeCurl.php#L387

R
На сайте с 10.11.2009
Offline
0
#5
bearman:
вспомнил я эту гадкую ошибку ...

изза курловской излишней "заботы".

впиши

$header[] = "Expect: ";

у меня в библиотеке это автоматически правится))

http://xp.helldude.ru/repositories/entry/dudecurl/trunk/libs/DudeCurl.php#L387

Все проблема решена, большой сенкс и респект!:)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий