最近在做WEBService开发,我这边是做请求端,去请求JAVA做的WEBService,疑问如下,$ViewProjectNumber['Project'] = '<number>1</number>';
$encodded = new SoapVar($ViewProjectNumber, SOAP_ENC_OBJECT);
$result = $client->oaProjectRequest($encodded);Server接收$encodded显示出来的值​​&#60;number&#62;1&#60;/number&#62;​ 被转义了,请问如何解决呢?

解决方案 »

  1.   

    print_r($encodded);
    SoapVar Object
    (
        [enc_type] => 301
        [enc_value] => Array
            (
                [Project] => <number>1</number>
            )
    )
    显然不是在客户端转义的
    但作为xml节点数据的话,则被转义是正确的,不然就被当做节点了
    你或许要使用 CDATA
      

  2.   

    写成这样看看
    $ViewProjectNumber['Project'] = '<![CDATA[<number>1</number>]]>';
      

  3.   

    接收到的信息如下:
    <?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>&lt;![CDATA[&lt;number&gt;1&lt;/number&gt;]]&gt;</Project></ns1:ProjectRequest></env:Body></env:Envelope>
      

  4.   

    @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节点,他只能接收到一个。