2017-12-22 3 views
0

최근에 PHP 원시 비누를 사용하여 PHP 웹 서비스를 만들었습니다. 응답을 생성하기 위해 wsdl, xsd 및 PHP 코드를 만들었습니다.PHP 네이티브, soapvar의 네임 스페이스를 무시합니다.

내 soapvar에서 네임 스페이스 접두사를 사용하여 soap arrayObject를 구성 할 때 일부 노드에는 접미사가 있지만 일부는 그렇지 않습니다. 내가 원하는 것은 모든 노드에 "ns1 :"접두사가 있거나 전혀없는 것입니다.

문제를 극복하기 위해 나는 soapvar에서 네임 스페이스를 제거했습니다. 그래서 이것은 ns 접두사를 제거했습니다. 그러나 나는 항상 wsdl "retrieveDataResponse"노드와 "ns1 :"접두사가있는 메시지를 가지고 있습니다. 내 PHP에서 모든 노드와 자식 enc_type에 따라 "XSD_STRING"또는 "SOAP_ENC_OBJECT"를 추가하여 중첩 된 foreach를 실행했습니다. foreach 문에서 PHP에서

내 soapvar은 다음과 같습니다

$dataStruct[] = new SoapVar($ListOfDataStruct, SOAP_ENC_OBJECT, null, null, 'ListOfData', 'http://localhost/soap/retrieveCstData'); 

내 XML 응답은

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/soap/retrieveCstData"> 
    <SOAP-ENV:Body> 
     <ns1:retrieveDataResponse> 
     <ns1:cstData> 
      <ns1:Description>Discription N/A</ns1:Description> 
      <ns1:ListOfData> 
       <ns1:Customer-Data-Header> 
        <ns1:AssetDescription>Basic 12 Months</ns1:AssetDescription> 
        <ns1:AssetId>1-3QGMHQ9</ns1:AssetId> 
        <ns1:ProductDescription>Basic 12 Months</ns1:ProductDescription> 
        <ns1:ProductId>1-2E543A</ns1:ProductId> 
        <ns1:ProductName>Basic Product Subscription</ns1:ProductName> 
        <ns1:ListOfCstData-Asset> 
        <ns1:CstData-Asset> 
         <AssetIntegrationId>1-3Q3KSNI</AssetIntegrationId> 
         <ProductName>Basic Product Subscription</ProductName> 
         <ProductPartNumber>SAT0028</ProductPartNumber> 
         <StartDate>08/19/2015 21:00:00</StartDate> 
         <Status>Active</Status> 
         <ListOfProductXA/> 
         <ListOfAddress/> 
         <ListOfContact/> 
        </ns1:CstData-Asset> 
        </ns1:ListOfCstData-Asset> 
       </ns1:Customer-Data-Header> 
       <ns1:Customer-Data-Header> 
        <ns1:AssetId>1-7MRO-241</ns1:AssetId> 
        <ns1:ProductDescription>SubProduct A</ns1:ProductDescription> 
        <ns1:ProductId>1-65TVM</ns1:ProductId> 
        <ns1:ProductName>SubProduct A Type</ns1:ProductName> 
        <ns1:ProductType>Product</ns1:ProductType> 
        <ns1:ListOfCstData-Asset> 
        <ns1:CstData-Asset> 
         <AssetIntegrationId>1-5T126KG</AssetIntegrationId> 
         <ProductName>Asset-Product 1</ProductName> 
         <ProductPartNumber>N/A</ProductPartNumber> 
         <StartDate>08/16/2016 21:00:00</StartDate> 
         <Status>Active</Status> 
         <ListOfProductXA/> 
         <ListOfAddress/> 
         <ListOfContact/> 
        </ns1:CstData-Asset> 
        <ns1:CstData-Asset> 
         <AssetIntegrationId>W-C5PLG-11H-1</AssetIntegrationId> 
         <ProductName>SubProduct A Type</ProductName> 
         <ProductPartNumber>Data Packets</ProductPartNumber> 
         <RegisteredDate>02/21/1978</RegisteredDate> 
         <ServiceID>#56487%</ServiceID> 
         <StartDate>02/21/1978 00:00:00</StartDate> 
         <ListOfProductXA/> 
         <ListOfAddress> 
          <CutAddress> 
           <AddressType>Installation</AddressType> 
           <TEK>1651</TEK> 
           <Type>Old</Type> 
           <Country>US</Country> 
           <StreetNumberFrom>37</StreetNumberFrom> 
           <PostalCode>66857</PostalCode> 
           <State>CA</State> 
           <StreetName> 
           <State>JAX Avenue</State> 
           </StreetName> 
          </CutAddress> 
         </ListOfAddress> 
         <ListOfContact> 
          <Contact> 
           <ActiveStatus>Y</ActiveStatus> 
           <IsPrimaryMVG>Y</IsPrimaryMVG> 
           <CellularPhone>555687676</CellularPhone> 
           <FirstName>Jhon</FirstName> 
           <LastName>Doe</LastName> 
           <PrefferedCommunicationMethod>SMS</PrefferedCommunicationMethod> 
           <ContactType>Technical</ContactType> 
          </Contact> 
         </ListOfContact> 
        </ns1:CstData-Asset> 
        </ns1:ListOfCstData-Asset> 
       </ns1:Customer-Data-Header> 
       <ns1:Customer-Data-Header> 
        <ns1:AssetDescription>Satelite 80CM</ns1:AssetDescription> 
        <ns1:AssetId>1-3QGMHX9</ns1:AssetId> 
        <ns1:ProductDescription>Satelite 80CM</ns1:ProductDescription> 
        <ns1:ProductId>1-2DIYLT</ns1:ProductId> 
        <ns1:ProductName>TV SAT</ns1:ProductName> 
        <ns1:ProductType>Product</ns1:ProductType> 
        <ns1:ListOfCstData-Asset> 
        <ns1:CstData-Asset> 
         <SubscriberId>664668941</SubscriberId> 
         <Comments>Suspension/Reactivation</Comments> 
         <AssetIntegrationId>1-3Q3KSNJ</AssetIntegrationId> 
         <ProductName>TV SAT</ProductName> 
         <ProductPartNumber>TV_SAT</ProductPartNumber> 
         <ServiceID>9995654321587</ServiceID> 
         <StartDate>08/19/2015 21:00:00</StartDate> 
         <Status>Active</Status> 
         <ListOfProductXA/> 
         <ListOfAddress> 
          <CutAddress> 
           <AddressType>Installation</AddressType> 
           <TEK>1651</TEK> 
           <Type>Old</Type> 
           <Area>CA</Area> 
           <Country>US</Country> 
           <StreetNumberFrom>37</StreetNumberFrom> 
           <ResidenceType>Business</ResidenceType> 
           <Floor>0</Floor> 
           <MailBox>US</MailBox> 
           <PostalCode>66857</PostalCode> 
           <State>CA</State> 
           <StreetName>JAX AVENUE</StreetName> 
           <District>DownTown</District> 
          </CutAddress> 
         </ListOfAddress> 
         <ListOfContact/> 
        </ns1:CstData-Asset> 
        </ns1:ListOfCstData-Asset> 
       </ns1:Customer-Data-Header> 
      </ns1:ListOfData> 
     </ns1:retrieveDataResponse> 
     </ns1:retrieveDataResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

그래서 당신은 접두사가 모든 노드에없는 볼 수 있습니다.

답변

0

글쎄, 내가 문제를 발견.

많은 foreach 루프 중 하나에서 배열 키 대신 이전에 선언 된 arrayObject를 사용했습니다.

그래서 soapvar는 네임 스페이스를 허용하지 않습니다.

+0

그러면 답으로 표시 할 수 있습니까? – jjok

관련 문제