Я пытаюсь отправить запрос POST HTTPS с данными XML на сервер с использованием PHP.PHP https post XML-данные с cURL
Все, что отправляется на сервер, требует аутентификации, поэтому я буду использовать cURL.
Некоторая справочная информация. Данные XML должны запрашивать сервер для загрузки файла с определенного URL-адреса в его локальное хранилище.
Одно правило использования этого API: Я ДОЛЖЕН установить тип содержимого для каждого запроса в application/xml.
Это то, что я сделал, но не работает ...
<?php
$fields = array(
'data'=>'<n1:asset xmlns:n1="http://.....com/"><title>AAAA</title><fileName>http://192.168.11.30:8080/xxx.html</fileName><description>AAAA_desc</description><fileType>HTML</fileType></n1:asset>'
);
$fields_string = "";
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string,'&');
$url = "https://192.168.11.41:8443/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, "admin:12345678");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/xml', 'Content-length: '. strlen($fields_string)));
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>
Я ожидал, чтобы получить XML-ответ либо успешно загружены или загрузить не удалось. Но вместо этого я получаю это сообщение об ошибке.
HTTP/1.1 415 неподдерживаемый Тип носителя Сервер: Apache-Coyote/1,1 Content-Type: текст/XML, кодировка = UTF-8 Content-Length: 0 Дата: Чт, 2 декабря 2010 03 : 02: 33 GMT
Я уверен, что тип файла верен, формат XML верен. Я пробовал urlencode поля, но это не сработало. Что еще я мог сделать неправильно?
пробовал, не работал ни – EDDIU 2010-12-02 04:12:51