如何在'Request'对象中设置XML文件(使用'setFiles'方法)Zend Framework 2

时间:2017-07-14 08:35:20

标签: php xml zend-framework

我正在尝试使用REST API(第三方)并需要发送XML文件以及请求。我试图按以下方式设置文件:

我的代码:

use Zend\Http\Request;
use Zend\Http\Client;
use Zend\Stdlib\Parameters;

$request = new Request();
$request->getHeaders()->addHeaders(array(
    'Content-Type' => 'text/xml; charset=UTF-8'
));
$request->setUri("<third-party-api-url>");
$request->setMethod('POST');
$request->setFiles(new Parameters(array("/path/to/xml/file.xml")));
$client = new Client();
$client->setAuth("<username>", "<password>", \Zend\Http\Client::AUTH_BASIC);
$response = $client->dispatch($request);
print_r($response->getBody());

执行上述代码时,我得到以下回复:

  

[解码xml正文时出错:org.xml.sax.SAXParseException;过早结束   的文件。

我猜XML正在截断到零长度文件,导致此错误。有人可以帮我指导如何在请求对象中发送文件吗?

提前致谢

迪利普

1 个答案:

答案 0 :(得分:0)

请改用客户端:

    $client = new Client();
    $client->setRequest($request);
    $client->setFileUpload("/path/to/xml/file.xml", 'file1');
    $response = $client->send();