我正在与第 3 方的 API 集成,我必须发布一些 XML,然后我会返回一些 XML。
在 CLI 上这行得通,我得到了积极的回应。
curl -X POST -d @/tmp/file http://url/to/endpoint --header "Content-Type:application/x-www-form-urlencoded"
但是,这不起作用,响应包含一个错误,告诉我我的请求 XML 无效。
$ch = curl_init();
$post = array(
'file' => '@/tmp/file'
);
curl_setopt($ch, CURLOPT_URL, 'http://url/to/endpoint');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$this->responseBody = curl_exec($ch);
curl_close($ch);
在这两种情况下,它都是同一个文件,并且位于同一台服务器上。该文件只是纯文本 XML。我能看到的唯一区别是我在 PHP 版本的 HTTP 标头中指定了一个字段名。
如何使用 PHP 发送该文件以准确复制 CLI 版本,例如没有 formdata/fieldname 位?
FWIW 我几天都无法回到 API 的开发人员那里,询问他将什么定义为“坏 XML”