Wicked
Новичок
2 вопроса по CURL
1) Хочу использовать курл для отправки xml-запроса (Content-type: text/xml) методом POST. Но стандартный курловый пост умеет отсылать только application/x-www-form-urlencoded (в случае, когда CURLOPT_POSTFIELDS задаются строкой) или multipart/form-data (в случае, когда CURLOPT_POSTFIELDS задаются массивом) запросы.
Пока что единственным способом делать через курл то, что мне нужно оказалось следующее:
Но мне он кажется сделанным через известное место. Есть мысли, как сделать это более элегантно?
2) Есть задача аплоадить скриптом файлы, пришедшие от пользователя, на другой удаленный сервер. И при этом сохранять оригинальное имя файла. Сейчас это сделано через использование собаки в $postvars, что заставляет курл считать файл с диска и послать его.
Но при этом курл при аплоаде передает удаленному серверу именно имя filename($filename). Так что, чтобы зааплоадить файл с оригинальным именем, я должен его с оригиальным же именем сохранить на диске. А это может быть чревато, т.к. файловые системы разные. Может быть кто-нибудь обладает тайным знанием, как добиться назначения кастомных имен при аплоаде, чтобы можно было именовать временные файлы в файловой системе более стандартно (tempnam())?
1) Хочу использовать курл для отправки xml-запроса (Content-type: text/xml) методом POST. Но стандартный курловый пост умеет отсылать только application/x-www-form-urlencoded (в случае, когда CURLOPT_POSTFIELDS задаются строкой) или multipart/form-data (в случае, когда CURLOPT_POSTFIELDS задаются массивом) запросы.
Пока что единственным способом делать через курл то, что мне нужно оказалось следующее:
PHP:
$header = array();
$header[] = "Host: xxx.com";
$header[] = "Content-type: text/xml";
$header[] = "Connection: close \r\n";
$header[] = $xml_content;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
2) Есть задача аплоадить скриптом файлы, пришедшие от пользователя, на другой удаленный сервер. И при этом сохранять оригинальное имя файла. Сейчас это сделано через использование собаки в $postvars, что заставляет курл считать файл с диска и послать его.
PHP:
$postvars["file"] = "@".$filename;
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);