我正在开发一个插件,该插件向供应商的发货API发布XML请求以获取发货报价。XML存储在一个名为$XML的字符串中。我可以使用以下参数使用curl成功发布XML请求:
$curl = curl_init( $this->settings[\'api_url\'] );
curl_setopt( $curl, CURLOPT_HEADER, 0 );
curl_setopt( $curl, CURLOPT_POST, 1 );
curl_setopt( $curl, CURLOPT_TIMEOUT, 45 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 0 );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $xml );
$result = curl_exec( $curl );
curl_close( $curl );
我的问题是,如何使用WordPress HTTP API做同样的事情?我想最大限度地提高那些服务器上可能没有curl的服务器的兼容性。
以下是我所做的HTTP API尝试:
$result = wp_remote_post(
$this->settings[\'api_url\'],
array(
\'method\' => \'POST\',
\'timeout\' => 45,
\'redirection\' => 5,
\'httpversion\' => \'1.1\',
\'headers\' => array(
\'Content-Type\' => \'text/xml\'
),
\'body\' => array(
\'postdata\' => $xml
),
\'sslverify\' => \'false\'
)
);
我尝试将身体改为:
\'body\' => array( $xml ),
我已经尝试将$xml转换为带有简单xml和json的php关联数组。
在我所有的尝试中,我一直在供应商的回复中发现一个错误:“prolog中不允许内容。”XML可能没有正确发布,或者HTTP API可能包含字节顺序标记(BOM)。
希望有人能帮忙。谢谢