all I had to do was change the default charset in my php.ini file
default_charset = "UTF-8"
I'm trying to create a SOAP client in PHP, but I'm having trouble with encoding.
The $Response has words with incorrect characters like è instead of è.
When importing the WSDL file into
SoapUI (a soap test suite) responses come back correctly encoded, so I don't think it has to do with the SOAP service.
SoapUI indicates that it's using UTF-8.
I've also tried a bunch of other
encodings , but without success.
All my php files are encoded in UTF-8.
$client = new SoapClient($wsdl_file, array('encoding'=>'UTF-8')); $Response = $client->__soapCall('GetMemberDetails', array($request)); debug($Response); die;
A sample response:
<members xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <UserInfo> ... <Status>règle</Status> ... </UserInfo> </members>
This is the raw request from SoapUI
POST http://test.app.com/WebServices/MemberService/MemberService.svc HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 SOAPAction: "http://test.org/MemberService/GetMemberDetails" Content-Length: 419 Host: test.app.com Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
is there a way to get the same kind of raw request from SoapClient in PHP?
edit: I intercepted the request in __doRequest.
Here are the differences between SoapClient and SoapUI
SoapClient (receives encoding errors)
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://test.org/"> <SOAP-ENV:Body> <ns1:GetMemberDetails> <ns1:memberId>123</ns1:memberId> </ns1:GetMemberDetails> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
SoapUI (receives correct encoding)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://test.org/"> <soapenv:Header/> <soapenv:Body> <tem:GetMemberDetails> <!--Optional:--> <tem:memberId>123</tem:memberId> </tem:GetMemberDetails> </soapenv:Body> </soapenv:Envelope>
make sure php charset is configure correctly
in your php.ini file
default_charset = "UTF-8"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.