SOAP 클라이언트에서 SOAP API 정책/확장 요구 사항을 제공하는 방법
P粉511896716
2023-08-29 20:09:01
<p>비누 api를 연결해야 하는데...비누 api를 지금 몇번 사용해봤는데 지금은 99%의 api가 휴면상태여서 몇년째 사용하지 않고 있습니다</p> ;
<p>Soap 클라이언트를 사용하여 API를 호출하면 </p>
<pre class="brush:php;toolbar:false;">SOAP-ERROR: WSDL 구문 분석: 알 수 없는 필수 WSDL 확장 'http://schemas.xmlsoap.org/ws/2004/09/policy'</ 사전>
<p>따라서 브라우저에서 wsdl 주소를 열면(로그인/비밀번호로 보호됨) XML 출력에서 다음 줄을 볼 수 있습니다</p>
<pre class="brush:php;toolbar:false;"><wsdl:definitions xmlns:p1="urn:haixin:all2crm" xmlns:wsp="http://schemas.xmlsoap.org/ ws/2004/09/policy" "http://schemas.xmlsoap.org/wsdl/" name="SI_USBPC_REQUEST" targetNamespace="urn:haixin:all2crm">
<wsdl:문서/>
<wsp:UsingPolicy wsdl:required="true"/>
<wsp:정책 wsu:Id="OP_SI_USBPC_REQUEST"/></pre>
<p>내가 가지고 있는 곳</p>
<pre class="brush:php;toolbar:false;"><wsp:Policy>
<wsp:PolicyReference URI="#OP_SI_USBPC_REQUEST"/>
</wsp:정책></pre>
<p>이 오류를 검색하면 전체 인터넷에서 정책 요구 사항을 끄는 답변이 있는 리소스를 1개만 찾을 수 있습니다. 즉, <code><wsp:UsingPolicy wsdl:required="false "/> </code> 하지만 API를 소유하고 있지 않으므로 정책 이름 <code>OP_SI_USBPC_REQUEST</code>를 검색하면 문제가 없고 결과가 나오지 않으므로 이것은 API 소유자가 설정한 것 같습니다. 일부 사용자 정의 이름</p>
<p>그래서 제 질문은 정책을 만들어 비누 클라이언트 요청에 첨부해야 하느냐는 것입니다.
확장 누락 오류가 발생하는데 정책 요구 사항을 끄면 사라지므로 정책과 확장 사이의 연결은 무엇입니까</p>
<p>확장 프로그램을 다운로드할 수 있는 곳이 있나요? 형식은 무엇입니까...soap 클라이언트 요청에 추가해야 합니까? </p>
<p>아니면 서버에 설치해야 하는 것인가요? 어떻게든 확장을 추가하면 API 호출에 사용자 이름/비밀번호를 추가했기 때문에 오류가 사라질까요? 아니면 이것이 첫 번째 단계일 뿐이고 그 후에 정책 요구 사항을 처리해야 합니까?</p>
<p>그런데 저는 PHP를 사용하여 API를 호출하는데 이것이 제 코드입니다</p>
<pre class="brush:php;toolbar:false;">$options = [
'로그인' => '로그인',
'비밀번호' => '내 비밀번호',
];
$client = new SoapClient("http://domain:port/dir/wsdl/?p=sa/92130e1ffa97338ba2d1fc026567031d" , $options );</pre>
<p>xml을 다운로드하고 로컬 파일에 대한 요구 사항을 끄고 비누 클라이언트에서 해당 파일 주소를 사용하는 경우 해당 파일을 사용하여 API와 통신할 수 있나요? (내가 이해한 바에 따르면 xml에는 실제 데이터가 포함되어 있지 않으며 비누 클라이언트에 대한 인터페이스/정의일 뿐이며 로컬 파일을 사용하여 온라인 API와 통신할 수 없습니다. 아니면 제가 틀렸을 수도 있습니다.) < ;/p>
"알 수 없는 필수 WSDL 확장"이라는 메시지는 SoapClient가 외부에서 요소를 찾았음을 의미합니다.
wsdl:required
属性设置为true
WSDL 네임스페이스용 (보시다시피 여기).따라서 이 오류를 방지하려면
wsdl:required
属性设置为false
를 교체하는 것이 한 가지 방법입니다.WSDL 파일을 다운로드하고 수정하고 로컬 복사본을 사용하는 것은 전적으로 가능합니다. 꼭 이용해보세요 여기에 표시된 절대 경로입니다.
이 맥락에서 "정책"은 WS-Policy 사양을 나타냅니다.