문제

zend_soap_server가 있습니다. 테스트해야합니다. 한 가지 문제 - 단위 테스트 및 개발 모드는 다른 데이터베이스에서 작동해야합니다. .htaccess를 통해 수행 할 수 있습니다.

SetEnvIfNoCase User-Agent (.*) APPLICATION_ENV=development
SetEnvIfNoCase User-Agent testing APPLICATION_ENV=testing

개발/생산 모드와 마찬가지로 Zend_soap_client를 사용하고 테스트를 위해 추가 매개 변수를 추가합니다. 테스트 지원을위한 소스 코드에는 특별한 변경 사항이 없습니다. 문제 - 나는 사용자 정의 사용자 에이전트를 설정할 수 없습니다.zend_soap_client이 매개 변수는 지원되지 않거나 문서화되지 않은 것 같습니다. 나는 mod_rewrite를 통해 똑같은 일을하려고 노력했다.

new Zend_Soap_Client('...?wsdl&testing');

그러나 query_string 테스트를 지원하려면 Zend_soap_server를 변경해야합니다. 그렇지 않으면 SOAP Actions는 WSDL 외부의 '테스트'에 반영되지 않습니다. 제 생각에는 좋지 않습니다.

나는 그것이 수락 테스트와 조금 더 관련이 있다는 것에 동의합니다. $server->setClass('classWS')), 그러나 어쨌든, 나는 용어에 관계없이 그것을 필요로합니다.

그래서 나에게 잘 작동하는 것은 다음과 같습니다.

new Zend_Soap_Client($wsdl, array('useragent' => 'testing'));

테스트에서.

도움이 되었습니까?

해결책

가능하지만 옵션을 설정하는 것보다 조금 더 복잡합니다. 열쇠는 a 스트림 컨텍스트. 필요한 기능은 다음과 같습니다 stream_context_create() - 또한 살펴보십시오 "HTTP 컨텍스트 옵션".

$context = stream_context_create(array(
    'http' => array(
        'user_agent' => 'testing'
    )
);
$client = new Zend_Soap_Client($wsdl, array('stream_context' => $context));

// or set option after instatiation
$client->setStreamContext($context);

편집하다:

스트림 컨텍스트 사용자 에이전트가 재정의되는 것처럼 보이면 다른 옵션은 user_agent-옵션 SoapClient 그 자체. 그러나 이것은이 옵션이 노출되지 않기 때문에 조금 더 복잡합니다. Zend_Soap_Client.

$client = new Zend_Soap_Client($wsdl);
$options = array_merge($client->getOptions(), array(
    'trace'      => true,
    'user_agent' => 'testing'
));
$soapClient = new Zend_Soap_Client_Common(array($client, '_doRequest'), $wsdl, $options);
$client->setSoapClient($soapClient);

위의 코드는 어느 정도 발생하는 일의 추출물입니다. Zend_Soap_Client::_initSoapClientObject() 기본값을 초기화합니다 SoapClient 사용자 정의 객체가 등록되지 않은 경우

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