Есть пример запроса на curl
curl -u 'mi@user':la@pass-X POST -F
orders=@../orders/shipments_22.10.2010_part_1.xml https://site.ru/api/upload.xml
Нужен аналог запроса на php.
Я написал так
<?
$user = 'mi@user';
$pass = 'la@pass';
$url = 'https://site.ru/api/upload.xml';
$postdata = http_build_query(
array(
'orders' => file_get_contents($_SERVER['DOCUMENT_ROOT'] . '\\orders\\shipments_22.10.2010_part_1.xml'
)));
$params = array('http' => array(
'method' => 'POST',
'header' => 'Authorization: Basic ' . base64_encode($user . ":" . $pass),
'content' => $postdata)
);
$context = stream_context_create($params);
if ($remote = fopen($url, 'rb', false, $context)) {
$response = @stream_get_contents($remote);
}
Header('Content-type: text/xml');
echo($response);
die();
Проблема в
http_build_query
она превращает все данные в urlencode.
Принимающий сервер я не контролирую, так что никаких urldecode при приёме.
Что можно сделать с учетом того, что запускаться скрипт будет не пойми где, так что никаких exec('curl') и curl_*();