There is an error in SOAP-request by PHP - php

This request:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Buy xmlns="http://tempuri.org/">
<perf>
<param1>1111</param1>
<param2>2222</param2>
</perf>
</Buy>
</soap:Body></soap:Envelope>
I create request with SoapClient:
$client = new SoapClient("http://0.0.0.0:8080/Service1.asmx?wsdl",
array(
'trace' => true,
'exceptions'=>true
));
Function "getTypes" and "getFunctions" work correct
$types = $client->__getTypes();
$functions = $client->__getFunctions ();
I'm creating object and I'm waiting result:
$std = new stdClass();
$std->param1 = '1111';
$std->param2 = '2222';
ini_set("soap.wsdl_cache_enabled", "0"); // disallow cache WSDL
$result = $client->Buy( array('perf' => $std ) );
var_dump($result); exit;
I got an error: SoapFault:
Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in /var/www/index.php:86 Stack trace: #0 [internal function]: SoapClient->__doRequest('__call('Buy', Array) #2 /var/www/index.php(86): SoapClient->Buy(Array) #3 {main} thrown in /var/www/index.php on line 86
In the logs of apache:
PHP Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in /var/www/index.php:86\nStack trace:\n#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://0.0.0...', 'http://tempuri....', 1, 0)\n#1 /var/www/index.php(86): SoapClient->__call('Buy', Array)\n#2 /var/www/index.php(86): SoapClient->Buy(Array)\n#3 {main}\n thrown in /var/www/index.php on line 86
Please, help me), may be, I created object with parameters not correct?

Try not to mix arrays and objects. Check this:
$result = $client->Buy( array('perf' => array('param1' => '1111', 'param2' => '2222')) );
Or this:
$result = $client->Buy( (object) array('perf' => (object) array('param1' => '1111', 'param2' => '2222')) );

Related

Uncaught SoapFault exception: [HTTP] Could not connect to host...[internal function]

I have a PHP Client.
The Server WSDL is https://34.200.105.231/VENTAS_SOAP/VentaService.svc?wsdl
The webservices generated by the session work without any problems
$params = array('soap_version' => SOAP_1_2);
$ws = new SoapClient(
'https://34.200.105.231/VENTAS_SOAP/VentaService.svc?wsdl',
$params
);
$parametros = array( 'sesion' => array(
'IDSesion' => "44444",
'IDCliente' => "rick",
'IDEmpresa' => "rick",
'IDUsuario' => "user",
'Token' => '',
),'codigo' => 'ac',
'descripcion' => '',
'cantidadRegistros' => '1',
'pagina' => '0'
);
print_r(print_r($ws->__soapCall("ConsultaArticulosServicios",$parametros)));
Not work, Response:
Fatal error: Uncaught SoapFault exception:
[HTTP] Could not connect to host in /home/admin/web/xxxxxxxx/public_html/nusoapfontana/metodos/index3.php:41
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://df-0e7d...', 'VentaServicio/V...', 2, 0)
#1 /home/admin/web/xxxxxxxx/public_html/nusoapfontana/metodos/index3.php(41): SoapClient->__soapCall('ConsultaArticul...', Array)
#2 {main} thrown in /home/admin/web/xxxxxxxx/public_html/nusoapfontana/metodos/index3.php on line 41
If I can access the Login function found here:
Http://34.200.105.231/SID/Service.svc?wsdl
Here I generate the data for the session.

Fatal error: Uncaught SoapFault exception: [soap:Server] Fault occurred while processing

I use this code
error_reporting(E_ALL);
ini_set('display_errors', 1);
$params = array(
'username' => 'username',
'password' => 'password',
'cocNo' => '1060907A'
);
$client = new SoapClient('URL/?wsdl',array('trace'=>1));
//$response = $client->__getTypes();
$response = $client->__getFunctions();
pint_r($response);
and get this successful response:
Array ( [0] => verifyResponse verify(verify $parameters) )
but when i use this code
$response = $client->__soapcall('verify',array($params));
I got this response error
Fatal error: Uncaught SoapFault exception: [soap:Server] Fault occurred while processing. in /PATH/index.php:22
Stack trace: #0 /PATH/index.php(22): SoapClient->__soapCall('verify', Array) #1 {main} thrown in /PATH/index.php on line 22
What is wrong with my call?
According to $client->__getTypes() you are missing an 'arg0' element in your data structure. Change your code to:
try
{
$response = $client->verify(array('arg0' => $params));
}
catch(Exception $e)
{
var_dump($e->getMessage());
}

SoapFault exception: [HTTP] Authorization Required

I am using third party SOAP API to get users details
$wsdl = 'https://sample.ifuture.com/sites/sample.xxxx.com/api/isession.php?wsdl';
$client = new SoapClient($wsdl, array ( 'username'=>'testusername', 'password'=>'testpassword'));
print_r($client->__getFunctions());
When I use SoapClient() I am successfully connect to WSDL, last statement return the function list of the WSDL.
Result
Array
(
[0] => boolean iLoggedOn(string $session)
[1] => boolean iLogOff(string $session)
[2] => boolean iLogOn(string $session, string $username, string $password)
[3] => boolean iPasswd(string $session, string $username, string $password)
[4] => list(boolean $return, string $message) iSync(string $username, string $action, string $values)
)
Now I am trying to use the SOAP __Call() to invoke soap method
$param = array(
"sessionid" =>"12345678900987654321abcisfetul12",
"username" =>"test",
"password"=>"test");
$client->__Call('iLogOn', $param);
The execution of above statement generates an error as mentioned below
Fatal error: Uncaught SoapFault exception: [HTTP] Authorization Required in /opt/lampp/htdocs/demo/saop/index.php:79 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://sample....', 'https://sample....', 1, 0) #1 /opt/lampp/htdocs/demo/saop/index.php(79): SoapClient->__call('iLogOn', Array) #2 {main} thrown in /opt/lampp/htdocs/demo/saop/index.php on line 79
Looking forward for appropriate solution.

PHP __SoapCall issue

I have a simple service using php and Soap
There's a function named getPrice in my SOAP SERVER
This is getPrice :
function getPrice($productISBN, $param)
{
return $productISBN;
}
$kks = new SoapServer(null, array('uri' => "urn://my/webservice/shop"));
$kks->addFunction( array(
'getPrice',
'reserveProduct',
'inquiryPostPrice',
'registerPostOrder'
) );
$kks->addFunction(SOAP_FUNCTIONS_ALL);
$kks->handle();
and this is my client file -This is in /kkc folder :
$client = new SoapClient(null, array(
'location' => "http://example.com/webservice/kks/shop.php",
'uri' => "urn://my/webservice/shop"
) );
var_dump( $client->__soapCall('getPrice', array(123456789, $param) ) );
//$param is a string
but I'll get this error in client :
Fatal error: Uncaught SoapFault exception: [HTTP] Internal Server
Error in /example.com/webservice/kkc/client.php:28 Stack trace:
#0 [internal function]: SoapClient->__doRequest('__soapCall('getPrice', Array)
#2 {main} thrown in /example.com/public_html/webservice/kkc/client.php on line 28
I have two other files like this and there's everything is fine...
Would you please let me know what's wrong here?
Thanks in Advance

Write username to httpheader for web service authetification with php

My code:
$url = "http://x.x.x.x/ws/special/Service?wsdl";
$context = stream_context_create(array('http' => array( 'username' => "jonas" )));
$client = new SoapClient($url, array("trace" => 1, "exception" => 0));
$res = $client->__soapCall("getinfo",array('counter'=>'10'));
Error:-
Fatal error: Uncaught SoapFault exception: [S:Server] missing parameter
'username' in C:\xampp\htdocs\test.php:7 Stack trace: #0
C:\xampp\htdocs\test.php(7): SoapClient->__soapCall('getAsinfo...', Array)
#1 {main} thrown in C:\xampp\htdocs\test.php on line 7
How to write to http header?

Categories