cannot connect to a soap api with php - php

I'm trying to access this URI: http://143.166.84.118/services/assetservice.asmx?WSDL (Dell warranty info)
In Windows Powershell I can do this no problem:
$service = New-WebServiceProxy -Uri http://143.166.84.118/services/assetservice.asmx?WSDL
But in PHP:
$DELL_URL = "http://143.166.84.118/services/assetservice.asmx?WSDL"; //Access webproxy by IP
$soap = new SoapClient($DELL_URL);
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://143.166.84.118/services/assetservice.asmx?WSDL' in C:\path\to\my\script.php:25 Stack trace: #0 C:\path\to\my\script.php(25): SoapClient->SoapClient('http://143.166....') #1 {main} thrown in C:\path\to\my\script.php on line 25
What am I doing wrong in php? I know the URL works cause it works with powershell.
As per Pete's suggestion I went to http://143.166.84.118/services/assetservice.asmx?WSDL and downloaded a local copy of the file then did this which worked:
$soap = new SoapClient($wsdlfilepath);
Do I always have to download a local copy of the file when using php?
edit: Didn't make any changes but now I'm getting "Uncaught SoapFault exception: [Client] looks like we got no XML document in..." error. Should I be worried about this? You can view the wsdl file by going to the link. Are there problems with it or extra white space? I didn't see any.

Related

PHP Error : Parsing WSDL: Couldn't load from https://

I'm pretty new at SOAP, but i didn't think this problem was going to give me such a headache. :-)
I have a WSDL at :
https://qas.sanitel.be/int/QAS_Sanitel_ExtInterfacingSvcs_v2/SanitelServices.asmx?wsdl
Seems to be OK, but it's over https. i think that's where my problem is.
I wrote several PHP scripts i found here on stackoverflow and google to get at least a function list, but anything i try gives me the same error :
I put the script on a wamp server, external host, external with SSL..
( ! ) Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://qas.sanitel.be/int/QAS_Sanitel_ExtInterfacingSvcs_v2/SanitelServices.asmx?wsdl=wsdl1' : failed to load external entity "https://qas.sanitel.be/int/QAS_Sanitel_ExtInterfacingSvcs_v2/SanitelServices.asmx?wsdl=wsdl1" in C:\wamp\www\sanitel.php:25 Stack trace: #0 C:\wamp\www\sanitel.php(25): SoapClient->SoapClient('https://WS4SNTR...', Array) #1 {main} thrown in C:\wamp\www\sanitel.php on line 25
I have the credentials , tried several authentications, everything gives me this error...
anyone see something i don't ? Thanks a lot !

WSDL reading shows strange first character with php

I'm reading a wsdl for SOAP connection :
https://api3.popfax.com/index.php?service=Popfax&wsdl
Other clients (mobile apps, desktop software, ...) are using it and have been doing so for a long time.
When I try to construct a SoapClient from it, I get :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://api3.popfax.com/index.php?service=Popfax&wsdl' : Start tag expected, '<' not found in D:\Dev\test\sendfax.php:32 Stack trace: #0 D:\Dev\test\sendfax.php(32): SoapClient->SoapClient('https://api3.po...') #1 {main} thrown in D:\Dev\test\sendfax.php on line 32
So I wrote this to test what I got :
$wsdl = 'https://api3.popfax.com/index.php?service=Popfax&wsdl';
$bip = file_get_contents($wsdl);
var_dump($bip);
And the result is string with on the first line :
'ï<?xml version="1.0" encoding="UTF-8"?>
And every time I reload that test script, the first character is different...
Any idea why ?
It's working fine for me. Have you tried using a simple text editor and just saving your code snippet in it, saving it with a .php suffix in your web root and calling it from localhost? (that's what I did)
It may be that the editor you're using has an encoding issue (just a huge guess).

Error with PHP SOAP and Magento WebService

I have a cloud server with CentOS 6, Apache 2.2, PHP 5.4 and i have one site with Magento.
And i try to use a Magento WebService and return this error:
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://******.com/dev/index.php/api/soap/index/?wsdl=1' : failed to load external entity "http://******.com/dev/index.php/api/soap/index/?wsdl=1"
I search here and in google, and i try many changes in php.ini, but in all cases i don't have success.
I read in some cases this is a problem in server side, for bad configuration.
Note¹: SOAP is installed in server, in phpinfo() SOAP is enabled.
Note²: On another server was working normally.
Anyone have any ideia how to solve this?
Edit: The server use WHM/CPanel and i use EasyApache for install Apache, PHP. And use default configuration.
Edit2: This is just a simple sample code that uses the SOAP and error it returns:
Code: (first line of this code is a line 9, and line 13 is "$cli = new SoapClient($api_url_v1);")
<?php
$api_url_v1 = "http://site.com/dev/api/soap/?wsdl=1";
$username = '*********';
$password = '*********';
$cli = new SoapClient($api_url_v1);
//retreive session id from login
$session_id = $cli->login($username, $password);
//call customer.list method
$result = $cli->call($session_id, 'customer.list', array(array()));
?>
Error:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://site.com/dev/api/soap/?wsdl=1' : failed to load external entity "http://site.com/dev/api/soap/?wsdl=1" in /home/******/public_html/test_soap.php:13 Stack trace: #0 /home/******/public_html/test_soap.php(13): SoapClient->SoapClient('http://site...') #1 {main} thrown in /home/******/public_html/test_soap.php on line 13
try to fetch the wsdl via webbrowser. if this does not work then you have an error in url. try www version of the urls, check for bad rewrites, check htaccess. you dont need https!

Cant connect to orange m2m using soap

I am trying to create a soap connection using the standard php soap client and I believe it is all correctly coded, however I am receiving this error :
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl' : Start tag expected, '<' not found in C:\wamp\www\php\run.php:16 Stack trace: #0 C:\wamp\www\php\run.php(16): SoapClient->SoapClient('https://m2mconn...') #1 {main} thrown in C:\wamp\www\php\run.php on line 16
From what I have found online it seems one problem may be to do with the ports, however im not sure which ports to check/use or how to.
Im also unsure if it is something to do with my internet connection as it is a little strange being from one router to another.
Here is my code:
$client = new SoapClient("https://m2mconnect.orange.co.uk/orange-soap/services/MessageServiceByCountry?wsdl");

SOAP service error

When I upload my webservice files to a live server it does not work. It was working on localhost. How can I fix this problem?
Error message
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing
WSDL: Couldn't load from
'http://openinvite.biz/iphoneservice/server2.php' : Premature end of
data in tag html line 2 in
D:\Hosting\7340680\html\iphoneservice\test.php:102 Stack trace: #0
D:\Hosting\7340680\html\iphoneservice\test.php(102):
SoapClient->SoapClient('http://fomlatong.com/server.php') #1 {main}
thrown in D:\Hosting\7340680\html\iphoneservice\test.php on line 102
You should probably use the WSDL version as opposed to the HTML one.
Change your URL to http://openinvite.biz/iphoneservice/server2.php?wsdl
The list of methods for that service appears to be
syncvents
getEvents
getAllEvents
searchPlaces
rsvpEvent
searchByCity
EditEvent
I'm not sure why you expect there to be a call() method.
Instead of using "soapclient" use "nusoap_client"

Categories