XML 데이터를 보내려면 Nusoap을 사용하여 웹 서비스를 개발하고 있는데 이번에는 'ó'와 같은 라틴 문자로 데이터를 보내야합니다. 그러나 비누 클라이언트에 넣으면 작동이 멈 춥니 다. 아래는 라틴 문자로 xml을 보내는 테스트를 위해 개발 된 코드의 요약입니다. PHP Nusoap이 라틴 문자로 실패합니다
이
는 서버 코드의 THS 요약이 개발되고있다 :include_once("nusoap/nusoap.php");
$server = new soap_server();
$server->configureWSDL("PersonImport","urn:PersonImport");
$server->register("PersonImport",array("login" => "xsd:string", 'senha' => 'xsd:string', 'fornecedor' => 'xsd:string'),array("return" => "xsd:string"),"urn:PersonImport","urn:PersonImport#PersonImport");
function PersonImport($login,$senha,$fornecedor) {
//Just for debug purposes
$return = "My login Is <b>".$login . "</b> And My senha Is <b>".$senha."</b> And My fornecedor Is <b>".$fornecedor."</b>.";
(...)(ommited code, xml parsing and response xml generation)
return $return;
}
이 클라이언트 코드의 THS 요약 한 것입니다
$xml .= "<STRAS>rua itororó</STRAS>";
특수 문자가
<?php
require_once("nusoap/nusoap.php");
$client = new soapclient("example.com?wsdl");
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
$xml .= "<fornecedor>";
$xml .= "<NAME1>Gian</NAME1>";
$xml .= "<MCOD1>Giancarlo SA</MCOD1>";
$xml .= "<STCD1>80048303000113</STCD1>";
$xml .= "<STCD2>55670185501</STCD2>";
$xml .= "<STCD3>5508150087</STCD3>";
$xml .= "<RG>359730553</RG>";
$xml .= "<STRAS>rua itororó</STRAS>";
$xml .= "<HOUSE_NUM1>81</HOUSE_NUM1>";
$xml .= "<HOUSE_NUM2>301</HOUSE_NUM2>";
$xml .= "<ORT02>Menino Deus</ORT02>";
$xml .= "<PSTLZ>90110290</PSTLZ>";
$xml .= "<REGIO>RS</REGIO>";
$xml .= "<ORT01>Porto Alegre</ORT01>";
$xml .= "<TELF1>32335675</TELF1>";
$xml .= "<TELFX>32335675</TELFX>";
$xml .= "<SMTP_ADDR>[email protected]</SMTP_ADDR>";
$xml .= "<ERDAT>2016-10-04</ERDAT>";
$xml .= "<ChangeData>2016-10-04</ChangeData>";
$xml .= "<StartData>2016-10-04</StartData>";
$xml .= "<OffData>2016-10-04</OffData>";
$xml .= "</fornecedor>";
$result = $client->PersonImport("login","password", $xml);
echo $result;
라인입니다. 'ó'문자를 제거하면 작동합니다. 이것은 나를 위해 일한
$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
내가 SimpleXML을 파서로 XML을 구문 분석했을 때,하지만 비누 작동하지 않았다
나는 XML에 인코딩을 설정하기 위해 노력했다.header("Content-type:text/html; charset=UTF-8");
나 :
는이 같은 UTF8 또는 ISO-8859-1의 페이지의 헤더를 설정하려고 나는를 htmlentities를 사용하려고header ('Content-type: text/html; charset=ISO-8859-1');
만 '의 실체 ó '는'& oacute; '입니다. 특수 문자 '&'이 있고 동일한 문제가 발생합니다.
함수를 직렬화해도 문제가 해결되지 않습니다.
Google에서 지금까지 답변을 찾을 수 없습니다.
nusoap을 사용하여 라틴 특수 문자를 전달할 수 있습니까? 방법이 있어야합니다.
보인다. CDATA를 사용하면 '&'를 이스케이프 처리 할 수 있으므로 다음과 같이 문자열에 htmlentities를 사용할 수 있습니다 :'$ xml. = " "; '. 나는 그것을 테스트하고 있는데, 항상 작동한다면 나는 그것을 대답으로 사용할 것이다. –
giancarloap