PHP 코드 작성에 익숙하지만 종종 객체 지향 코딩을 사용하지 않습니다. 이제 SOAP (클라이언트)와 상호 작용해야하며 구문을 제대로 얻을 수 없습니다. SoapClient 클래스를 사용하여 새 연결을 올바르게 설정할 수있는 WSDL 파일이 있습니다. 그러나 실제로 올바른 전화를 걸고 데이터를 가져올 수는 없습니다. 다음 (간체 화 된) 데이터를 보내야합니다.
- 연락 ID
- 담당자 이름
- 일반적인 설명
- 양
WSDL 문서에는 두 개의 함수가 정의되어 있지만 하나만 필요합니다 (아래 "FirstFunction"). 사용 가능한 기능 및 유형에 대한 정보를 얻기 위해 실행하는 스크립트는 다음과 같습니다.
$client = new SoapClient("http://example.com/webservices?wsdl");
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
그리고 여기에 생성되는 출력이 있습니다 :
array(
[0] => "FirstFunction Function1(FirstFunction $parameters)",
[1] => "SecondFunction Function2(SecondFunction $parameters)",
);
array(
[0] => struct Contact {
id id;
name name;
}
[1] => string "string description"
[2] => string "int amount"
}
데이터로 FirstFunction을 호출하고 싶다고 가정 해보십시오.
- 연락 ID : 100
- 담당자 이름 : John
- 일반 설명 : 오일 배럴
- 금액 : 500
올바른 구문은 무엇입니까? 나는 모든 종류의 옵션을 시도했지만 비누 구조가 상당히 유연 해 보이기 때문에 많은 방법이 있습니다. 매뉴얼에서도 알아낼 수 없었습니다 ...
업데이트 1 : MMK에서 시도한 샘플 :
$client = new SoapClient("http://example.com/webservices?wsdl");
$params = array(
"id" => 100,
"name" => "John",
"description" => "Barrel of Oil",
"amount" => 500,
);
$response = $client->__soapCall("Function1", array($params));
그러나 나는이 응답을 얻는다 : Object has no 'Contact' property
. 당신의 출력에서 볼 수 있듯이 getTypes()
, 거기입니다 struct
라는 Contact
내가 어떻게 든 내 매개 변수는 연락처 데이터를 포함 취소해야 같아요, 그래서,하지만 질문은 : 어떻게?
업데이트 2 :이 구조를 시도했지만 동일한 오류가 발생했습니다.
$params = array(
array(
"id" => 100,
"name" => "John",
),
"Barrel of Oil",
500,
);
만큼 잘:
$params = array(
"Contact" => array(
"id" => 100,
"name" => "John",
),
"description" => "Barrel of Oil",
"amount" => 500,
);
두 경우 모두 오류 : 개체에 '연락처'속성이 없습니다`