У меня есть веб-служба RESTful, развернутая на jboss EAP. В другом случае я создаю файл php для создания XML и хочу отправить их (POST) в RESTful.

RESTful http://192.168.0.191:8080/UserManagement/rest/UserService/users/ веб-сервисы выглядят так:

<sample>
  <user>
    <id>1</id>
    <name>Moyes Chuck</name>
    <profession>Teacher</profession>
  </user>
  <user>
    <id>2</id>
    <name>Van Gaal</name>
    <profession>Driver</profession>
  </user>
</sample>

И создаем postxml.php:

$xml = new SimpleXMLElement('<sample/>');
    $track = $xml->addChild('user');
    $track->addChild('id', "3");
    $track->addChild('name', "Brody Ben");
    $track->addChild('profession', "Manager");

В том же файле (postxml.php) этот код я написал для публикации в RESTful:

$service_url1 = 'http://192.168.0.191:8080/UserManagement/rest/UserService/users/';
$curl1 = curl_init($service_url1);
curl_setopt($curl1, CURLOPT_RETURNTRANSFER, true);
$arr=array("key"=>$xml);
curl_setopt($curl1, CURLOPT_POST, 1);
curl_setopt($curl1, CURLOPT_POSTFIELDS,$arr);
echo $curl1_response = curl_exec($curl1);
curl_close($curl1);

Но когда я запускаю postxml.php в браузере, http: // localhost: 82 / test3 / postxml.php , отображается ошибка:

Статус HTTP 415 - неподдерживаемый тип носителя.
JBWEB000069: описание JBWEB000135: сервер отклонил этот запрос, поскольку объект запроса находится в формате, не поддерживаемом запрошенным ресурсом для запрошенного метода.

0
AVI 30 Дек 2015 в 11:53

2 ответа

Лучший ответ

Удалите $arr=array("key"=>$xml); и просто добавьте этот код, и все будет нормально

curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/xml',                                                                                
    'Content-Length: ' . strlen($xml))                                                                       
); 
1
angvee 8 Окт 2016 в 19:11

Вы POST добавляете объект типа SimpleXMLElement в веб-службу.

Отправьте вместо этого строку xml

$arr=array("key"=>$xml->asXML());

Если попробовать

print $xml->asXML();

Вы увидите фактическую строку XML, которую вам нужно отправить в веб-службу.

0
Alex Andrei 30 Дек 2015 в 09:24