2013-06-20 1 views
0

PHP SoapClient를 사용하여 Webservice를 만들고 있습니다. http://web.abaseguros.com/AutoConnect/ACCatalogos.svc?wsdlPHP SOAPClient WCF 매개 변수를 보내는 중 오류가 발생했습니다.

그리고 여기 내 코드입니다 :

웹 서비스 URL은

<?php 

ini_set("soap.wsdl_cache_enabled", "0"); 
$pin = new SoapClient("http://web.abaseguros.com/AutoConnect/ACCatalogos.svc?wsdl"); 

class Token { 
    var $usuario; 
    var $password; 
    function Token($user,$pass) { 
     $this->usuario = $user; 
     $this->password = $pass; 
    } 
} 

//User and Password for the token object 
$Token = new Token('usuarioWCF','Pa$$w0rd');  

//XML 'Entrada' String 
$Entrada = "<CAT><NEG>5786</NEG></CAT>"; 

$result = $pin->ObtenerMarcas($Token,$Entrada); 

하지만 PHP는 다음과 같은 오류 메시지가 출력한다 : 회사는 나에게 샘플 코드를 준

Fatal error: Uncaught SoapFault exception: [a:DeserializationFailed] when i execute the script.

을 C#로 작성된 #

private void Obtener_Catalogo_ABASeguros() 
{ 
string strEntrada, strSalida; 

strEntrada = “<CAT><NEG>5786</NEG></CAT>“; + 

ACCatalogosClient proxy = new ACCatalogosClient(); 


Token token = new Token(); 
token.usuario = "usuarioWCF"; 
token.password = "Pa$$w0rd"; 

try 
{ 
    strSalida = proxy.ObtenerMarcas(token, strEntrada); 
} 
catch (FaultException<Error> ex) 
    { 
    txtCotSalida.Text = string.Format("Ocurrio un error en el WCF:\n " + 
     "Origen: {0}\n "+ 
     "Mensaje: {1}\n "+ 
     "Stack: {2}", ex.Detail.Origen,  ex.Detail.Mensaje, ex.Detail.StackTrace); 
} 

하지만 매개 변수가 두 언어로 전송되는 방식을 이해할 수는 없습니다.

어떤 도움말이 필요합니까?

답변

0

비누 클라이언트는 개체 토큰을 역 직렬화하는 방법을 알지 못합니다. 해당 토큰 객체를 연관 배열로 변환하고 해당 배열을 작업의 매개 변수로 대신 사용해야합니다.

$pin->ObtenerMarcas(get_object_vars($Token),$Entrada); 

이 오류가 해결 되더라도 서비스가 아직 정상적으로 작동하지 않습니다. 대신 비누 헤더에 토큰이 필요합니다. 당신이 넣은 C 코드는 당신에게 모든 것을 보여주지 못한다. 그것은 구현이 Proxy 클래스 안에 캡슐화되어있다. 문서가 있으면 읽어야합니다. 그렇지 않으면 제공된 전역 wsdl 링크에 임베드 된 가져온 wsdl 파일을 읽어야합니다.

+0

그것은 didnt 한 작업 치명적인 오류 : catch되지 SOAPFault의 예외 : A : DeserializationFailed] : 동작 "ObtenerMarcas '을 요청 메시지의 바디를 역 직렬화에 오류 메시지를 직렬화하는 동안 포맷터 예외가 발생했습니다. 네임 스페이스 'http://schemas.xmlsoap.org/soap/envelope/'에서 'Body'끝 요소를 예상했습니다. 네임 스페이스 ''에서 요소 'param1'을 (를) 발견했습니다. –

+0

예 토큰 개체를 사용하여 SAP 헤더를 보내고 있지만 토큰 개체에 대한 문서가 없습니다. –

+0

은 c 프록시 클래스 내부의 구현을 살펴볼 가치가 있습니다. 죄송합니다. 설명서가 없으면별로 도움이되지 못합니다. – DavidLin

관련 문제