문제

나는 이와 같이 PHP (5.2.5)에서 비 WSDL 호출을하려고합니다. 나는 단순한 것을 놓치고 있다고 확신합니다. 이 호출에는 "TimeZone"이라는 하나의 매개 변수 인 문자열이 있습니다.

    $URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';

    $client = new SoapClient(null, array(
        'location' => $URL,
        'uri'      => "http://www.Nanonull.com/TimeService/",
        'trace'    => 1,
        ));

// First attempt:
// FAILS: SoapFault: Object reference not set to an instance of an object
   $return = $client->__soapCall("getTimeZoneTime",
       array(new SoapParam('ZULU', 'timezone')),
       array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
    );

// Second attempt:
// FAILS: Generated soap Request uses "param0" instead of "timezone"
   $return = $client->__soapCall("getTimeZoneTime",
       array('timezone'=>'ZULU' ),
       array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
   );

제안 해주셔서 감사합니다
-Dave

도움이 되었습니까?

해결책 2

감사. 다음은 현재 작동하는 완전한 예입니다.

$URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';

$client = new SoapClient(null, array(
    'location' => $URL,
    'uri'      => "http://www.Nanonull.com/TimeService/",
    'trace'    => 1,
    ));

$return = $client->__soapCall("getTimeZoneTime",
   array(new SoapParam('ZULU', 'ns1:timezone')),
   array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);

다른 팁

@Dave C의 솔루션은 저에게 효과가 없었습니다. 주위를 둘러 보면서 또 다른 해결책을 제시했습니다.

$URL = 'http://www.nanonull.com/TimeService/TimeService.asmx';

$client = new SoapClient(null, array(
    'location' => $URL,
    'uri'      => "http://www.Nanonull.com/TimeService/",
    'trace'    => 1,
    ));

$return = $client->__soapCall("getTimeZoneTime",
   array(new SoapParam(new SoapVar('ZULU', XSD_DATETIME), 'timezone')),
   array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);

이것이 누군가를 도울 수 있기를 바랍니다.

문제는 매개 변수에 네임 스페이스 정보가 부족한 곳에 있습니다. 나는 당신의 예제가 내가 생각해 낸 것에 가장 가까웠 기 때문에 당신의 첫 번째 사례를 사용했습니다.

라인을 변경하면 :

array(new SoapParam('ZULU', 'timezone')),

에게:

array(new SoapParam('ZULU', 'ns1:timezone')),

예상 한 결과를 제공해야합니다.

당신은 다른 것을 추가하려고 시도 할 수 있습니다 array() 다음과 같이 매개 변수를 호출하십시오.

$params = array('timezone'=>'ZULU' );
$return = $client->__soapCall("getTimeZoneTime",
    array($params),
    array('soapaction' => 'http://www.Nanonull.com/TimeService/getTimeZoneTime')
);

나는 이것을 테스트 할 수 없지만 당신은 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top