私はサードパーティの API と統合しています。いくつかの XML を POST する必要があり、いくつかの 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 を使用してそのファイルを送信し、たとえば formdata/fieldname ビットなしで CLI バージョンを正確に複製するにはどうすればよいですか?
FWIW API の開発者に数日間戻って、彼が「悪い XML」と定義しているものを尋ねることはできません