Задать вопрос
zorba_buddha
@zorba_buddha
IT

Как отправить в теле post запроса к api xml через php?

Из документации rs24.ru:
Необходимо отправлять запрос по адресу https://rs24.ru/webservices/rest/XXRSV_I1085_ITEM_... методом «POST» с параметрами:
• Accept значение application/xml
• Content-Type значение application/xml
• Authorization значение 'Basic ' || to_base64(|| ':' || <пароль>)
формируется конкатенацией строки Basic и логина ‘:’ пароля в кодировке Base64.
Тело запроса выглядит следующим образом:

<GET_Input xmlns:ns="xmlns.oracle.com/apps/fnd/soaprovider/plsql/rest/X..." xmlns:ns1="xmlns.oracle.com/apps/fnd/soaprovider/plsql/rest/X...">
<RESTHeader>
<Responsibility>IBE_FIL_022</Responsibility>
<RespApplication>IBE</RespApplication>
<SecurityGroup>STANDARD</SecurityGroup>
<NLSLanguage>RUSSIAN</NLSLanguage>
</RESTHeader>
<InputParameters>
<P_VERSION>2.0</P_VERSION>
<P_PARAMETER_TBL>
<P_PARAMETER_TBL_ITEM>
<PARAMETER_NAME>P_SITE_USE_ID</PARAMETER_NAME>
<PARAMETER_VALUE>1324787</PARAMETER_VALUE>
</P_PARAMETER_TBL_ITEM>
<P_PARAMETER_TBL_ITEM>
<PARAMETER_NAME>P_ITEM_NUM</PARAMETER_NAME>
<PARAMETER_VALUE>10100</PARAMETER_VALUE>
</P_PARAMETER_TBL_ITEM>
</P_PARAMETER_TBL>
</InputParameters>
</GET_Input>


Вот в чём вопрос - как передать тело запроса?
Насколько мне известно - в post в теле могут быть только параметры со значением, т.е. в php надо сделать как-то так:
curl_setopt_array(
CURLOPT_POSTFIELDS => http_build_query(array(
'xml' => $xml
))
);
Как быть?
Саппорт тупит по страшному, код не понимают, примеров никаких нет.
  • Вопрос задан
  • 824 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@DanKud
Просто отправляйте XML в CURLOPT_POSTFIELDS без кодирования:
$xml = 'ваш_XML';
.....
CURLOPT_POSTFIELDS => $xml
.....
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы