2016-10-05 7 views
0

Nusoapを使用してxmlデータを送信するWebサービスを開発していますが、今回は 'ó'などのラテン文字でデータを送信する必要があります。しかし、私はそれを石鹸のクライアントに入れて、それは動作を停止します。以下は、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要約です:

<?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を解析しなければならなかったとき、これは私のために働いたが、それは石鹸では動作しませんでした。

私はこのようなUTF8またはISO-8859-1のためのページのヘッダーを設定しようとしました:私はにhtmlentitiesを使用しようとしましたが、 'のエンティティ

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

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

かo 'は' & oacute; '特殊文字 '&'を持つと同じ問題が発生します。

関数をシリアライズしても問題は解決しませんでした。

今までGoogleで回答が見つかりませんでした。

nusoapを使用してlatin特殊文字を渡すことはできますか?方法が必要です。

+0

が見えます。 CDATAを使用して私は '&'をエスケープすることができますので、 '$ xml。=" <![CDATA ["huaentities(" RuaItororó ")]>"のように文字列にhtmlentitiesを使用できます。 '。私はそれをテストしています、それが常にうまくいくなら、私はそれを答えとして使用します。 – giancarloap

答えて

0

私は方法を見つけたように見えます。私は「&」を逃れることができるので、私はこのように、文字列の上にhtmlentitiesを使用することができますCDATAを使用する:私は方法を見つけたよう

$xml .= "<STRAS><![CDATA[".htmlentities("Rua Itororó")."]]></STRAS>"; 
関連する問題