여기 SOAP이있는 OK n00bPHP에서 SOAP 게시물을 얻는 방법은 무엇입니까?
SOAP 사용 방법에 대한 설명이 필요하십니까?
질문 :
나는이 자바 JSP이 게시물은 WSDL 내 PHP 스크립트 (XML 형식 모양),하지만 어떻게 내가 PHP 스크립트에서이받을 수 있나요? WSDL의 URL은 매번 다를 수 있습니다.
나는 아주 간단하다고 생각하지만, 정확히 어떻게 이해하지 못 했는가?
여기 SOAP이있는 OK n00bPHP에서 SOAP 게시물을 얻는 방법은 무엇입니까?
SOAP 사용 방법에 대한 설명이 필요하십니까?
질문 :
나는이 자바 JSP이 게시물은 WSDL 내 PHP 스크립트 (XML 형식 모양),하지만 어떻게 내가 PHP 스크립트에서이받을 수 있나요? WSDL의 URL은 매번 다를 수 있습니다.
나는 아주 간단하다고 생각하지만, 정확히 어떻게 이해하지 못 했는가?
당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :
try { if (!($xml = file_get_contents('php://input'))) { throw new Exception('Could not read POST data.'); } } catch (Exception $e) { print('Did not successfully process HTTP request: '.$e->getMessage()); exit; }
이것은 $의 XML 변수로 POST 요청의 본문을 읽고 존재하는 경우 오류를 인쇄합니다.
JSP가 POST 요청에서 WSDL을 PHP 스크립트로 보내는 것을 의미합니까? 그렇다면 $ _POST 배열을 살펴보십시오. JSP에서 정확히 보내는 방법을 지정하면 더 도움이 될 것입니다.
어쨌든 일단 PHP 스크립트의 변수에 WSDL URL이 있으면 SoapClient 클래스로 WSDL URL을 가질 수 있습니다.
예이 경로에 대해 얘기하고있어, 어쩌면 내가 그냥 원시 게시물을 소비하고 그런 식으로 구문 분석 수 있을까? –
최상의 시나리오를 가정 :
$soapClient = new SoapClient($wsdlUrl, $soapOptions);
$soapClient->callYourMethod();
하지만 SOAP를 사용하는 경우 벽돌 벽을 많이 칠 가능성이있어. 여기에 documentation for SoapClient이 있습니다.
편집 :
그래서, WSDL은 POST-ED입니다. 그런 다음 XML 문자열이 HTTP 본문으로 전송 된 경우 $HTTP_RAW_POST_DATA
을 사용하거나 XML 문자열이 다중 요청의 일부로 전송 된 경우 $_FILES
수퍼 글로벌을 사용하여 액세스 할 수 있습니다. 이 같은
뭔가 : always_populate_raw_post_data
설정 php.ini 파일이 설정되어있는 경우
$wsdl = $HTTP_RAW_POST_DATA;
$wsdlUrl = 'data:text/xml;base64,' . base64_encode($wsdl);
$soapClient = new SoapClient($wsdlUrl);
어쨌든, $HTTP_RAW_POST_DATA
에만 사용할 수 있습니다. 또한 요청이 여러 부분 인 경우이 설정은 무시되고 $HTTP_RAW_POST_DATA
은 채워지지 않지만 $_FILES
을 사용하여 게시 된 부분에 액세스 할 수 있습니다. 실제로 $HTTP_RAW_POST_DATA
대신 php://input
을 사용할 수도 있습니다.
data URIs 또한 allow_url_fopen
이 php.ini에서 켜져있는 경우에만 사용할 수 있습니다.
하지만 어떻게 $ wsdlUrl을 얻을 수 있습니까? 이것은 매번 내가 PHP 스크립트가 –
을 처리 할 필요가있을 때마다 변경됩니다. URL에는 데이터 자체가 포함되어 있습니다. URL 프로토콜은 http가 아니고 데이터입니다. SoapClient 클래스가 이것을 처리하면 가장 좋은 해결책입니다. – gnud
이 "php : // input"을 본 적이 없습니까?이 텍스트는 RAW 게시물 데이터를 읽습니까? –
고마워이 작품은 위대한 –