我正在尝试在PHP中使用SOAPClient从函数中获取一些值。我已经创建了代码,但是出现错误“不支持的媒体类型”。
我尝试研究此问题,发现标头中的SOAP版本或Content-type可能是问题。我想知道如何在SOAP中设置SOAP版本和Content-type。标头使用下面的代码-
希望有人可以提供帮助。 谢谢 C
<?php
error_reporting(E_ALL);
try{
header("Content-type: application/soap+xml; charset=utf-8");
$client = new
SoapClient("https://www1.gsis.gr/wsaade/RgWsPublic2/RgWsPublic2?WSDL",
array("trace" => true, '
exceptions' => 1));
// $client->__getTypes();
// $client->__getFunctions();
// $result = $client->functionName();
$params = new SoapVar('
<?xml version="1.0" encoding="utf-8"?><env:Envelope
xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns
:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-
secext-1.0.xsd" xmlns:ns2="http://rgwspublic2/RgWsPublic2Service"
xmlns:ns3="http://rgwspublic2/RgWsPublic2">
<env:Header>
<ns1:Security>
<ns1:UsernameToken>
<ns1:Username>******</ns1:Username>
<ns1:Password>******</ns1:Password>
</ns1:UsernameToken>
</ns1:Security>
</env:Header>
<env:Body>
<ns2:rgWsPublic2AfmMethod>
<ns2:INPUT_REC>
<ns3:afm_called_by/>
<ns3:afm_called_for>******</ns3:afm_called_for>
</ns2:INPUT_REC>
</ns2:rgWsPublic2AfmMethod>
</env:Body>
</env:Envelope>', XSD_ANYXML);
$result = $client->__soapCall('rgWsPublic2AfmMethod', array($params));
highlight_string($client->__getLastRequest());
}
catch(SoapFault $fault){
die("SOAP Fault:<br />fault code: {$fault->faultcode}, fault string:
{$fault->faultstring}");
}
答案 0 :(得分:0)
添加- SoapClient(“ https://www1.gsis.gr/wsaade/RgWsPublic2/RgWsPublic2?WSDL”,array(“ soap_version” => SOAP_1_2,“ trace” => true,“ exceptions” => 1))
为确保请求使用SOAP版本1.2。
答案 1 :(得分:0)
我来晚了,但这是使用此服务的方法。这是一项从希腊税务机关返回有关企业信息的服务。 $AFMcallby 是来电者的增值税号,$AFMCall 是您感兴趣的增值税号,以及您通过注册服务获得的用户名/密码。
function checkVATGR($username,$password,$AFMcalledby="",$AFMcalledfor)
{
$client = new SoapClient( "https://www1.gsis.gr/wsaade/RgWsPublic2/RgWsPublic2?WSDL",array('trace' => true, 'soap_version'=>SOAP_1_2) );
$authHeader = new stdClass();
$authHeader->UsernameToken=new stdClass();
$authHeader->UsernameToken->Username = "$username";
$authHeader->UsernameToken->Password = "$password";
$Headers[] = new SoapHeader('http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'Security', $authHeader,TRUE);
$client->__setSoapHeaders($Headers);
$result = $client->rgWsPublic2AfmMethod(
array("INPUT_REC" => array(
'afm_called_by'=>"$AFMcalledby",
'afm_called_for'=>"$AFMcalledfor"
))
);
return $result;
}