PHP 클라이언트를 C#/WCF 웹 서비스에 작성하고 있습니다. 일부 호출의 매개 변수는 PHP로 인스턴스화하고 SOAP 형식의 페이로드로 HTTP POST를 통해 웹 서비스로 전달하는 비즈니스 클래스의 인스턴스로 구성됩니다. 이러한 클래스 중 일부의 생성자에는 하나 이상의 선택적 매개 변수가 있으며 그 중 일부는 Int32 유형입니다.PHP SoapClient 호출의 null 값
PHP에서이 매개 변수를 선택적으로 설정 한 다음 빈 문자열 (물론 더 구체적으로 빈 노드로 아래 예에서 <ns1:order />
)로 전송되는 웹 서비스까지 인스턴스를 보냅니다. 이는 다음 모델 중 하나에서 발생합니다
class ThingOne {
/**
* @var string $name
*/
/**
* @var int $order
*/
__construct($name, $order = null) {
$this->name = $name;
$this->order = $order;
}
}
또는
class ThingOne {
/**
* @var string $name
*/
/**
* @var int $order
*/
__construct($name, $order = null) {
$this->name = $name;
if(isset($order) {
$this->order = $order;
}
}
}
해당 개체가 웹 서비스에 도달하면
는, C 번호는The value '' cannot be parsed as the type 'Int32'
말, 그것을 deserilize 수 없습니다.
기본값을 0으로 설정하면 모든 것이 정상적으로 작동합니다 (오류 메시지가 표시되면 예상대로). 문제는 webservice가 제공되지 않을 경우 해당 값을 기본값으로 설정하는 비즈니스 로직이 있으며 클라이언트에서 해당 로직을 재현하지 않겠다는 것입니다.
빈 노드를 보내지 않고 PHP의 SoapClient가 null 속성을 보내지 않도록 지시 할 수있는 방법이 있습니까?