我正在使用xml接口集成Rkiper。我遇到了一个问题,通过邮递员,我的请求悄悄地离开了,我得到了所需的答案,但是使用脚本却无法做到。
我编写了以下代码:
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client([ 'verify' => false]);
//
$uri = 'https://95.78.120.27:8096/rk7api/v0/xmlinterface.xml';
$xml = '<?xml version="1.0" encoding="windows-1251"?>
<RK7Query>
<RK7CMD CMD="GetRefList"/>
</RK7Query>';
$request = new Request(
'POST',
$uri,
['Content-Type' => 'text/xml; charset=UTF8',
'Authorization' => 'Basic xxx'],
$xml
);
$response = $client->send($request);
echo $response->getBody();
在这种情况下,我只会得到一个空白的响应,一个白页。 您可能会认为有授权的内容(而不是密码xxx),但事实并非如此,因为否则它将显示401未经授权。对于我们来说,更改发送的xml就足够了,这样它就不会溢出,那么在响应中我们将已经收到
[GuzzleHttp\Exception\ServerException]
Server error: `POST https://95.78.120.27:8096/rk7api/v0/xmlinterface.xml` resulted in a `500 Unable to do action` response:
<?xml version="1.0" encoding="utf-8"?>
<messagesData>
<type>SimpleXMLException</type>
<mesg>"RK7CMD" expe (truncated...)
(500)
您可能会认为问题出在与我通信的接口的xml一侧,但是没有,我通过邮递员得到了正确的答案。
邮递员生成了这样的curl请求,但是即使将其放入脚本中并运行它,也会出现白屏:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://95.78.120.27:8096/rk7api/v0/xmlinterface.xml",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"\t<RK7Query>\n\t<RK7CMD CMD=\"GetRefList\"/>\n\t</RK7Query>'",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic SFRUUFVzZXI6eih5K040aUhhY3Uw",
"Content-Type: application/xml"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
通常来说,我在这个阶段已经坐了大约一个星期,不知道我的问题是什么。请帮我:)