2016-10-05 46 views
0

我開發使用的NuSOAP發送XML數據的Web服務,而這個時候我必須用拉丁字符像「O」發送數據。但是,當我把它放在肥皂客戶端時,它停止工作。下面是正在開發的代碼用於測試用拉丁字符發送xml的摘要。腓的NuSOAP失敗,拉丁字符

這是正在開發的服務器代碼部份摘要:

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; 
} 

這是客戶端代碼部份摘要:

<?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 .= "<STRAS>rua itororó</STRAS>"; 

具有特殊字符的行。如果我刪除了「ó」字符,它就會起作用。

我試圖設置編碼XML的:

$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>"; 

這爲我工作,當我不得不用SimpleXML解析器解析XML,但它並沒有對香皂工作。

我試圖設置頁面的標題爲UTF-8或ISO-8859-1這樣的:

header("Content-type:text/html; charset=UTF-8"); 

或:

header ('Content-type: text/html; charset=ISO-8859-1'); 

我試圖用ヶ輛,但'實體'是'& oacute;'其中有特殊字符'&',然後發生同樣的問題。

函數serialize沒有解決問題。

到目前爲止,我在google上找不到答案。

是否有可能使用的NuSOAP通過拉丁語特殊字符?一定有辦法。

+0

看起來像我找到了一種方法。使用CDATA我能逃脫 '&',所以可在字符串使用ヶ輛,像這樣:'$ XML = 「<![CDATA [!」 ヶ輛( 「街Itororó」)​​ 「]。]>」。 '。我正在測試它,如果它能正常工作,我會用它作爲答案。 – giancarloap

回答

0

看起來像我找到了一種方法。使用CDATA我能逃脫「&」,這樣我就可以在字符串中使用ヶ輛,像這樣:

$xml .= "<STRAS><![CDATA[".htmlentities("Rua Itororó")."]]></STRAS>";