WEBService Client(PHP)->Server(JAVA)

代小炫 2013-06-11 03:31:46
最近在做WEBService开发,我这边是做请求端,去请求JAVA做的WEBService,疑问如下,

$ViewProjectNumber['Project'] = '<number>1</number>';
$encodded = new SoapVar($ViewProjectNumber, SOAP_ENC_OBJECT);
$result = $client->oaProjectRequest($encodded);



Server接收$encodded显示出来的值​​<number>1</number>​ 被转义了,请问如何解决呢?
...全文
118 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
代小炫 2013-06-25
  • 打赏
  • 举报
回复
@xuzuning 我给你发下gettypes获取到的东西 Array ( [0] => struct UnitReserve { Reserve Reserve; } [1] => struct Revenue { ContractUnitNumber ContractUnitNumber; ElevatorModel ElevatorModel; CostQuantity CostQuantity; ContractValueNetOfTax_EQ ContractValueNetOfTax_EQ; FreeMaintenanceRevenue_EQ FreeMaintenanceRevenue_EQ; CTURevenue_IN CTURevenue_IN; ContractValueNetOfTax_IN ContractValueNetOfTax_IN; Currency Currency; RevenueReserve RevenueReserve; } [2] => string ContractUnitNumber [3] => string ElevatorModel [4] => decimal CostQuantity [5] => decimal ContractValueNetOfTax_EQ [6] => decimal FreeMaintenanceRevenue_EQ [7] => decimal CTURevenue_IN [8] => decimal ContractValueNetOfTax_IN [9] => string Currency [10] => struct RevenueReserve { Reserve Reserve; } [11] => struct Project { ViewProjectNumber ViewProjectNumber; boolean NewInstallation; boolean Modification; boolean CrossRegionSales; PersonResponsible PersonResponsible; EquipmentContractNumber EquipmentContractNumber; FrameworkAgreementNumber FrameworkAgreementNumber; InstallationContractNumber InstallationContractNumber; ProjectName_CN ProjectName_CN; ProjectName_EN ProjectName_EN; string PlannedStartDate; string PlannedFinishDate; EquipmentSignOffCustomer EquipmentSignOffCustomer; BillToParty BillToParty; InstallationContractSignOffCustomer InstallationContractSignOffCustomer; BillToParty2 BillToParty2; EquipmentContract EquipmentContract; InstallationCommissioningContract InstallationCommissioningContract; ProjectReserve ProjectReserve; Unit Unit; } [12] => string ViewProjectNumber [13] => string PersonResponsible [14] => string EquipmentContractNumber [15] => string FrameworkAgreementNumber [16] => string InstallationContractNumber [17] => string ProjectName_CN [18] => string ProjectName_EN [19] => string EquipmentSignOffCustomer [20] => string BillToParty [21] => string InstallationContractSignOffCustomer [22] => string BillToParty2 [23] => string EquipmentContract [24] => string InstallationCommissioningContract [25] => struct Cost { ContractUnitNumber ContractUnitNumber; CostItem CostItem; CostIndicator CostIndicator; CostCode CostCode; CostQuantity CostQuantity; ProcurementPrice ProcurementPrice; Currency Currency; CostReserve CostReserve; } [26] => string ContractUnitNumber [27] => string CostItem [28] => string CostIndicator [29] => string CostCode [30] => decimal CostQuantity [31] => decimal ProcurementPrice [32] => string Currency [33] => struct ProjectRequest { Project Project; } [34] => struct Unit { ContractUnitNumber ContractUnitNumber; MFG_WBS MFG_WBS; GADNumber GADNumber; TP2QuotationNumber TP2QuotationNumber; DAUnitNumber DAUnitNumber; UnitInterestsAttributeBranch UnitInterestsAttributeBranch; SupplierFactory SupplierFactory; UnitQuantity UnitQuantity; ElevatorModel ElevatorModel; RatedLoad RatedLoad; RatedSpeed RatedSpeed; Floors Floors; Stops Stops; TravellingHeight TravellingHeight; MainDoorSideLandingDoors MainDoorSideLandingDoors; OppositeDoorSideLandingDoors OppositeDoorSideLandingDoors; LandingDoors LandingDoors; Length Length; InstallContractSigningBranch InstallContractSigningBranch; InstallContractExecutionBranch InstallContractExecutionBranch; ElevatorType ElevatorType; NonStopFloors NonStopFloors; OpenThroughDoor OpenThroughDoor; FloorsBothSideOpenThroughDoor FloorsBothSideOpenThroughDoor; ShaftHeight ShaftHeight; StepWidth StepWidth; InclinationAngle InclinationAngle; Rise Rise; EscalatorWhereUsed EscalatorWhereUsed; Segment Segment; IntervalSupport IntervalSupport; UnitReserve UnitReserve; Revenue Revenue; Cost Cost; } [35] => string ContractUnitNumber [36] => string MFG_WBS [37] => string GADNumber [38] => string TP2QuotationNumber [39] => string DAUnitNumber [40] => string UnitInterestsAttributeBranch [41] => string SupplierFactory [42] => decimal UnitQuantity [43] => string ElevatorModel [44] => decimal RatedLoad [45] => decimal RatedSpeed [46] => decimal Floors [47] => decimal Stops [48] => decimal TravellingHeight [49] => decimal MainDoorSideLandingDoors [50] => decimal OppositeDoorSideLandingDoors [51] => decimal LandingDoors [52] => decimal Length [53] => string InstallContractSigningBranch [54] => string InstallContractExecutionBranch [55] => string ElevatorType [56] => decimal NonStopFloors [57] => string OpenThroughDoor [58] => decimal FloorsBothSideOpenThroughDoor [59] => decimal ShaftHeight [60] => decimal StepWidth [61] => decimal InclinationAngle [62] => decimal Rise [63] => string EscalatorWhereUsed [64] => decimal Segment [65] => string IntervalSupport [66] => struct CostReserve { Reserve Reserve; } [67] => struct ProjectReserve { Reserve Reserve; } [68] => struct Reserve { Key Key; Value Value; } [69] => string Key [70] => string Value ) ----------------------------------------- 我现在给你发下我现在如何调用的 $client = new Zend_Soap_Client('http://localhost:8080/mockoaProjectRequestBinding?WSDL') ; $xml = simplexml_load_file("a.xml") ; $client->oaProjectRequest($xml) ; 但是Server接收的时候,<unit><a></unit><unit></unit>要是XML文件中有这样2个unit节点,他只能接收到一个。
代小炫 2013-06-25
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
写成这样看看 $ViewProjectNumber['Project'] = '<![CDATA[<number>1</number>]]>';
接收到的信息如下: <?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://thyssenkrupp.com/pi/VIEW/Project"><env:Body><ns1:ProjectRequest><Project><![CDATA[<number>1</number>]]></Project></ns1:ProjectRequest></env:Body></env:Envelope>
xuzuning 2013-06-25
  • 打赏
  • 举报
回复
写成这样看看 $ViewProjectNumber['Project'] = '<![CDATA[<number>1</number>]]>';
代小炫 2013-06-25
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
print_r($encodded);
SoapVar Object ( [enc_type] => 301 [enc_value] => Array ( [Project] => <number>1</number> ) ) 显然不是在客户端转义的 但作为xml节点数据的话,则被转义是正确的,不然就被当做节点了 你或许要使用 CDATA
在这方法基础上,如何防止转义呢?能说明下吗?
xuzuning 2013-06-11
  • 打赏
  • 举报
回复
print_r($encodded);
SoapVar Object ( [enc_type] => 301 [enc_value] => Array ( [Project] => <number>1</number> ) ) 显然不是在客户端转义的 但作为xml节点数据的话,则被转义是正确的,不然就被当做节点了 你或许要使用 CDATA

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧