1
PHP-Script가 각 id-Element에 item-Tag를 출력하는 이유는 무엇입니까? 이 항목 - 래퍼는 필요하지 않으며 SOAP-WS 요청에 오류를 발생시킵니다. nusoap을 사용하고 있습니다.PHP는 SOAP 요청을 위해 item이라는 불필요한 XML-Tag를 생성합니다.
잘못된-XML :
<SOAP-ENV:Envelope> <SOAP-ENV:Body> <ns2475:uploadMetaData xmlns:ns2475="..."> <uploadMetaData> <mediaNumber xsi:type="xsd:string">906</mediaNumber> <associations xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="unnamed_struct_use_soapval[2]"> <item> <id xsi:type="xsd:int">1</id> </item> <item> <id xsi:type="xsd:string">5</id> </item> </associations> </uploadMetaData> </ns2475:uploadMetaData> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
올바른-XML :
<SOAP-ENV:Envelope> <SOAP-ENV:Body> <ns2475:uploadMetaData xmlns:ns2475="..."> <uploadMetaData> <mediaNumber xsi:type="xsd:string">906</mediaNumber> <associations xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="unnamed_struct_use_soapval[2]"> <id xsi:type="xsd:int">1</id> <id xsi:type="xsd:string">5</id> </associations> </uploadMetaData> </ns2475:uploadMetaData> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
PHP 코드 :
$associationslist = array();
foreach($xml->xpath('//associations') as $association) {
// add existing themes to list
array_push($associationslist, array('id'=>$association->id));
}
// add one after looping
array_push($associationslist, array('id'=>$themeid));
$client_mediapool->call('uploadMetaData',array('uploadMetaData'=>array('mediaNumber'=>$mediaid,'associations'=>$associationslist)), $ns);
아무도 아이디어가 있습니까?
감사합니다. 마리오
최신 버전으로 급격한 변화가 없으면 NuSOAP의 배열 처리가 뚜렷하게 다릅니다. 하나 이상의 문자열 키가있는 배열의 기본 인코딩은 배열 키 다음에 이름이 지정된 XML 요소를 작성하여'array ('spaces ='1 '키)에 대해 유효하지 않은 XML을 생성하는 것입니다. 모든 숫자 키가있는 배열의 기본 인코딩은 비 순차적 인 경우에도 키가 중요하지 않다고 가정하고 '- '노드 목록을 출력합니다. 상호 운용이 잘되지만 타사 서비스에 연결하려면 [내장 SOAPClient] (http://php.net/soapclient)를 사용하는 것이 좋습니다. –
IMSoP
이유는, NuSOAP을 사용했기 때문에 Multipart가 포함 된 XML 응답이고 기본 SOAPClient는 Multipart/Related XOP를 지원하지 않습니다. 그러나 지금 NuSOAP을 제거하고 SOAPClient를 다시 사용했지만 먼저 SOAPClient를 확장하여 필요한 코드를 모두 제거합니다. – marioa