我正在尝试将我的脚本连接到SOAP客户端。但是当我尝试这样做时会引发上述错误。当我试图获得该功能
$client->__getFunctions()
。它显示了所有功能。当我试图打电话给他们时,它以致命的错误告终。
$client = new SoapClient("http://bsestarmfdemo.bseindia.com/MFOrderEntry/MFOrder.svc?singleWsdl",array(
'soap_version' => SOAP_1_2, // !!!!!!!
));
var_dump($client->__getFunctions());
//var_dump($client->__getTypes());
$login_params = array(
'UserId' => 123456,
'Password' => 123456,
'PassKey' => 1234569870,
);
//$response = $client->getPassword($login_params);
$response = $client->__soapCall('getPassword', array($login_params));
dd($response);
如果我将SOAP版本更改为1.1我会收到另一个错误无法处理该消息,因为内容类型为#text; xml;字符集= UTF-8'不是预期的类型&application; / soap + xml; charset = utf-8'。如果我知道我在这里缺少什么,那就太棒了。
答案 0 :(得分:0)
要解决@Naveen Kumar的回复:这是我的解决方案。
// Apply WSA headers
$action = new \SoapHeader('http://www.w3.org/2005/08/addressing', 'Action', self::ACTION_PREFIX.$this->action);
$to = new \SoapHeader('http://www.w3.org/2005/08/addressing', 'To', $this->endpoint);
$this->client()->__setSoapHeaders([$action, $to]);
最后,$this->client
只返回\SoapClient
的实例,该操作包含该方法的完整URL。当然,To
部分是可选的,但在我的情况下,它显然指向.wsdl
文件中指定的端点。