I\'m trying to create a web service but before I do I\'m trying to get a simple example that I found on the internet to work first but I keep getting the following error:
A byte order mark (BOM) would have the same effect as whitespace before the php tags. Here you find a PHP snippet to detect and remove a BOM. Be sure to configure you editor to not insert the BOM again.
Another possible solution...
I had the same problem, I was getting crazy. The solution was simple. Verifying my server.. cause it is a server error. My error was that i had put "rcp" instead of "rpc".
This error appears also if a soap XML response contains special Unicode characters.
In my case it was REPLACEMENT CHARACTER (U+FFFD
).
In details, inner function of the SoapClient xmlParseDocument
sets xmlParserCtxtPtr->wellFormed
property as false
after parsing. It throws soap fault with looks like we got no XML document
.
https://github.com/php/php-src/blob/master/ext/soap/php_packet_soap.c#L46
As far as I understand, the error of the SOAP parser when it comes invalid XML.
As it was with me.
Warning: simplexml_load_string(): Entity: line 1: parser error : xmlParseCharRef: invalid xmlChar value 26 in
As a result, I obtained the following code:
$params = array(...);
try
{
$response = $client->method( $params );
}
catch(SoapFault $e)
{
$response = $client->__getLastResponse();
$response = str_replace("",'',$response); ///My Invalid Symbol
$response = str_ireplace(array('SOAP-ENV:','SOAP:'),'',$response);
$response = simplexml_load_string($response);
}
If someone will tell in the comments what a symbol, I will be grateful.
A bit late, but this kinda error is often caused by server-side (SOAP sense) problem :
This message just inform you that the SOAP client did not receive well-formatted XML (eg. an error message instead of XML).
Try to look into your server log. If you use nginx, please look into /var/log/nginx/error.log. if "Permission denied" pop up, please change related dir owner. Hope it will work.