это мой первый пост, так что извините за что-то.Я искал в интернете, но не нашел ничего непротиворечивого.
Я должен отправить этот XML на WS:
<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://services.senior.com.br\">
<soapenv:Body>
<ser:ConsultarGeral>
<user>iusr</user>
<password>ipss</password>
<encryption>0</encryption>
<parameters>
<CodEmp>1</CodEmp>
<CodFil>1</CodFil>
<IdentificadorSistema>1</IdentificadorSistema>
</parameters>
</ser:ConsultarGeral>
</soapenv:Body>
</soapenv:Envelope>
И я всегда получал одну и ту же ошибку (она говорит: «я не отправляю поля codemp
, codfil
, identificadorsistema
).
Я пытался с CURL:
const URI_CURL = 'http://192.168.1.7:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_cad_condicaopagamento?wsdl=';
function execWs() {
try {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => URI_CURL,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 60,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://services.senior.com.br\">
<soapenv:Body>
<ser:ConsultarGeral>
<user>iusr</user>
<password>ipss</password>
<encryption>0</encryption>
<parameters>
<CodEmp>1</CodEmp>
<CodFil>1</CodFil>
<IdentificadorSistema>1</IdentificadorSistema>
</parameters>
</ser:ConsultarGeral>
</soapenv:Body>
</soapenv:Envelope>",
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: text/xml"
),
));
$curlInfo = curl_getinfo($curl);
//print_r($curlInfo);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
//$info['mensagem'] = $err;
$info['erro'] = false;
return $info;
} else {
$xml = simplexml_load_string(str_replace('ns2:', '', str_replace('S:', '', $response)));
//$xml = simplexml_load_string($response);
if (is_object($xml)) {
$info['TipoRetorno'] = (int) $xml->Body->ConsultarGeralResponse->result->TipoRetorno;
$info['CondicaoDePagamento'] = (string) $xml->Body->ConsultarGeralResponse->result->CondicaoDePagamento;
$info['MensagemRetorno'] = (string) $xml->Body->ConsultarGeralResponse->result->MensagemRetorno;
$info['Erros'] = (string) $xml->Body->ConsultarGeralResponse->result->Erros;
$info['erro'] = (string) $xml->Body->ConsultarGeralResponse->result->erroExecucao;
echo "TipoRetorno:<br><i>";
print_r ($info['TipoRetorno']);
echo "</i><br>Lista Condições:<br><i>";
print_r ($info['CondicaoDePagamento']);
echo "</i><br>MensagemRetorno:<br><i>";
print_r ($info['MensagemRetorno']);
echo "</i><br>Erros:<br><i>";
print_r ($info['Erros']);
echo "</i><br>Erro:<br><i>";
print_r ($info['erro']);
echo "</i>";
} else {
//$info['mensagem'] = 'Erro';
$info['erro'] = false;
}
if (is_array($info)) {
return $info;
} else {
//$info['mensagem'] = 'Erro';
$info['erro'] = false;
return $info;
}
}
} catch (Exception $e) {
return $e->getMessage();
}
}
?>
И SoapClient:
$a = 1;
$b = 1;
$c = 1;
$client = new SoapClient('http://192.168.1.7:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_cad_condicaopagamento?wsdl');
$function = 'ConsultarGeral';
$arguments= array('user' => 'isur', 'password' => 'ipss', 'encryption' => 0, 'ConsultarGeral' => array('CodEmp'=>$a,'CodFil'=>$b,'IdentificadorSistema'=>$c));
$options = array('location' => 'http://192.168.1.7:8080/g5-senior-services/sapiens_Synccom_senior_g5_co_cad_condicaopagamento?wsdl');
$result = $client->__soapCall($function, $arguments, $options);
echo '<BR>';
if(isset($result->erroExecucao)){
echo '<strong>' . $result->erroExecucao . '<strong>';
} else {
$response = 'Resultado: <strong>' . $result->MensagemRetorno . '<strong>';
echo $response;
}
Получил то же самоеошибка на обоих, кто-то может определить, что я делаю неправильно?
РЕДАКТИРОВАТЬ: я использовал
echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n <BR>";
, чтобы напечатать мой XML, сгенерированный soapclient, и это возврат: REQUEST:
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://services.senior.com.br"><SOAP-ENV:Body><ns1:ConsultarGeral><user>iusr</user><password>ipss</password><encryption>0</encryption><parameters/></ns1:ConsultarGeral></SOAP-ENV:Body></SOAP-ENV:Envelope>
Параметры тега не создаются, но на $ arguments я передаю его: /
$arguments= array('user' => 'iusr',
'password' => 'ipss',
'encryption' => 0,
'ConsultarGeral' => array('CodEmp' => 1,
'CodFil' => 1,
'IdentificadorSistema' => 1));