Я пытаюсь отправить данные в файле XML через API, используя WordPress wp_remote_post. Однако, когда я проверяю ответ, я получаю 0 байт. Я не уверен, где я ошибся, но любая помощь будет оценена. Вот документы для справки https://help.rmscloud.com/rms-api-technical-information
<?php
$url = 'https://api.rms.com.au/rmsxml/rms_api.aspx';
$xml = 'https://spf.nz/dev/wp-content/themes/yootheme-child/rms.xml';
$args = array(
'method' => 'POST',
'timeout' => 10,
'httpversion' => '1.1',
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( 'demoagent:aREbf2875khu*' ),
'Content-type' => 'application/xml',
'Content-length' => 83
),
'body' => array($xml),
'sslverify' => true
);
$response = wp_remote_post( $url, $args);
if ( is_wp_error( $response ) ) {
$error_message = $response->get_error_message();
echo "Something went wrong: $error_message";
} else {
echo 'Response:<pre>';
print_r( $response );
echo '</pre>';
}
?>
XML-файл:
<RMSPropertyRQ>
<Requests>
<Request>
<AgentId>1</AgentId>
<RMSClientId>3038</RMSClientId>
</Request>
<Request>
<AgentId>1</AgentId>
<RMSClientId>3038</RMSClientId>
</Request>
</Requests>
</RMSPropertyRQ>
На самом деле вы не отправляете данные XML через wp_remote_post.
Вы установили 'body' => array($xml)
, но переменная $ xml — это просто строка, содержащая URL. Вместо этого вам нужно получить данные XML и отправить их.
<?php
$url = 'https://api.rms.com.au/rmsxml/rms_api.aspx';
$xml = wp_remote_get('https://spf.nz/dev/wp-content/themes/yootheme-child/rms.xml');
$xml=$xml['body'];
///......
Других решений пока нет …