같은 휴식을 구현하는 비누 관련이 둘 모두를 생성 요청을하고 다음을 핸들링의 응답입니다. 반면 처리 비누 응답이 유사한 내용의 휴식 결과, 생성을 비누 요청이 다르다.
과는 달리 휴식, 그것은 오히려 드문를 확인 요청을 올렸습 수동지만 여전히 수행할 수있습니다. 일반적으로, 비누 요청이 중 하나를 올렸습있는 일반적인 도구 (처럼 사용할이나 배 : 비누) 또는와 함께하는 응용 프로그램 - 특정 클래스 또는 모듈입니다. 수동 세대는 커버 여기 (좋은 이해의 작동 원리에 유용한 것이다)는 물론 사용할.
응용 프로그램 - 특정 도구가 될 무시, 예를 몇가 지 이유입니다. 이들은 응용 프로그램을 구체적으로 정의하고 따라서이 일반 문서에 매우 유용하지 않습니다. 둘째로,이 도구는 다양한 인터페이스 및 기능 수준, 그리고 그 주제 정의를 수행하기 위해 필요로하는 것이다 - 농도 모양입니다. 마지막으로, 저는 굳게의 견해를하는 경우와 함께 작동되도록 할 수있습니다 파악하는 방법을 사용할 (또는 원시, 예를있는 사안)을 사용하실 수있습니다가 응용 프로그램 - 구체적인 도구를 사용하여 작업이 너무합니다.
비누 요청을 수동으로 생성되지 않은 너무 다르다 생성 휴식을 요청합니다. 이 과정의 생성을 요청하고 실제로 송신 그것으로 나누는 2 개의 별도의 기능, 예를 시연 목적으로합니다.
|
|
에 대한 생성을 요청 자체가, 나는 선택했습니다을 사용하려면 미리 생성된 문자열을, 그리고 단지 필요한 값을 32995 런타임입니다. 지 더 복잡한 옵션 (예 : 문서 작성 이내 simplexml, 또는 각각의 실행을 처음부터 새로 작성합니다), 그러나 그들은 정말 필요하지 않습니다 :
functioncreaterequest ($ devkey, $ 액션, $ 유형, $ 키워드)
(
$ 요청 = "<? xmlversion = \ "1.0 \"인코딩 = \ "utf - 8 \"독립형 = \ "아니오 \"? >
<비누 - 환경 : 봉투
xmlns : 비누 - 환경 = \ "http://schemas.xmlsoap.org/soap/envelope/ \"
xmlns : 제출 = \ "http://www.w3.org/2001/xmlschema \"
xmlns : xsi = \ "http://www.w3.org/2001/xmlschema-instance \">
<비누 - 환경 : 본문>
<devkey xsi : 유형 = \ "제출 : int \"> $ devkey </ devkey>
<액션 xsi : 유형 = \ "제출 : 문자열 \"> $ 액션 </ 액션>
<유형 xsi : 유형 = \ "제출 : 문자열 \"> $ 유형 </ 종류>
<키워드가 xsi : 유형 = \ "제출 : 문자열 \"> $ 키워드 </ 키워드>
</ 비누 - 환경 : 본문>
</ 비누 - 환경 : 봉투> ";
돌아 $ 요청;
)
알 수 있듯이,이 함수는 단지 약으로 간단하게 얻을 수있습니다. 참고로 변수를받지 않은하십시오 - 인코딩; 이것이 전송되고 있기 때문에 그들이없습니다의 구매 (소리가 분명하지만, 또한 쉽게 놓치지)입니다.
실제로, 호출하는 api를 전송하는가 요청을 관련 차입금 일부 코드에서 첫 번째 휴식을 들어,이 요청이 발송됩니다 원시하기 때문에이 시간입니다.
functioncallsoapapi ($ 데이터)
(
$하십시오 = "http://library.example.com/api/soap/search";
$ url_info = parse_url ($ :);
$ 호스트 = $ url_info [ '호스트'];
$ 경로 = $ url_info [ '경로'];
나는 그냥 채워져있을 수있습니다 $ 호스트와 $ 경로 변수가 언제 시작하지만,이 명확해졌. 에서 생산 시스템을 저장할 수있습니다 몇 개의 cpu 사이클에 의해 hardcoding 이러한 요소입니다.
$ fp = fsockopen ($ 호스트, 80);
fputs ($ fp, "". $ 경로입니다. "http/1.1 \ r \ 해당");
fputs ($ fp, "호스트 :"입니다. 달러를 개최합니다. "\ r \ 해당");
fputs ($ fp, "동의 : * / * \ r \ 해당");
fputs ($ fp, "동의 - 문자 세트 : iso - 8859 - 1, utf - 8; 질문 = 0.7, *; 질문 = 0.7 \ r \ 해당 ");
fputs ($ fp, "연결 : 닫기 \ r \ 해당");
fputs ($ fp, "콘텐츠 - 종류 : 응용 프로그램 / 비누 + xml \ r \ 해당");
fputs ($ fp, "콘텐츠 - 길이 :"입니다. strlen ($ 데이터)입니다. "\ r \ 해당 \ r \ 해당");
fputs ($ fp, "$ 데이터");
이 블록은 거의 동일하여 이전 예제입니다. 이전 예제는 게시물을 요청 반면, 이것은 요청을 변경하는 것이 지시한하여 어떤 api 여러분과 함께 최선을 다하고있습니다. 콘텐츠 - 유형 헤더는 서로 다른를 정확하게 반영이 시간을 보내고 물론 원하는 데이터를 보낼 수있는 달러 있도록 콘텐츠 - 길이 없게됩니다 0.
$ 반응 = "";
반면 (! feof ($ fp))
(
$ 응답 따른 결과 ($ fp, 128);
)
fclose ($ fp);
목록 ($ http_headers, $ http_content) = 폭발 ( "\ r \ 해당 \ r \ 해당", $ 응답);
돌아 $ http_content;
)
이 섹션은 또한 휴식을 들어 동일합니다. 이러한 기능을 모두 포장을 검색에 대한 응답은 겨우 치가 언급 :
$ 요청 = createrequest ('123 ','검색 ','도서 ','스타일);
$ 반응 = callsoapapi ($ 요청);
아니 너무 열심히!
과는 달리 휴식을 할 수없습니다 file_get_contents ()를 사용하면 키보드의 것이든,이 없기 때문에 xml 본문과 함께 보낼 필요가있다는 요청합니다. file_put_contents ()을주는 작품 중 하나를하기 때문에이 필요합니다 응답 (file_put_contents ()을 반환하는 int), 그러나 다른 옵션도있습니다. 배 (http://pear.php.net), 예를 들어, http - 특정 기능이 존재하는가 걸릴 수있습니다 두통을 수동으로 만드는 중 일부는 요청을 해제하여 손, 그러나 여전히 유연성을 얻을 수 있도록 여러분 모두와 함께 설명서를 작성합니다.
이외에 대해 한 - 샷 프로그램, 내 것이 분명 권해 이용해 일종의 비누 모듈을 만들 수 코딩 생명 쉽습니다. 비록를 실행하는 경우에 문제를 추적하여 다운 약간의 통증을하실 수있습니다. 나는 상자를 사용하는 지역 개발 기간 동안 개발, 그래서 일을 시작을해야한다 고 경종을 사용할 수 있습니까 패킷 스니퍼를 보라는 요청 / 응답의 원시 형태입니다.
개념적으로 사용할를 사용하여 작업을 수동으로 완료되지 않은 너무 다릅니다. 해당 개체가 초기화를 페이로드가 만들어집니다, 그리고는 요청이 보내집니다. 의 키 차이가 여기에 해당 사용할는 모든 더러운 작업을 수행합니다.
필요로 ('../ lib /해야 ');
$ 클라이언트 = 새 soapclient ( "http://library.example.com/api/soap/wsdl/", 진정한);
여기에 $ 클라이언트 개체가 만들어집니다. 가 능하면, 나는 wsdl 파일을 사용합니다; 귀하의 일부 실수가 사용할 모듈을 잡을 수있는 방법, 그리고 그것을 보장하는 서로 다른 요청 형식을 모두 이동하려면 올바른 종점입니다.
$ 매개 변수 = 배열 (
'devkey' "=> '123 ',
'작업' "=> '검색',
'유형' "=> '도서',
'키워드' "=> '스타일'
);
준비의 매개 변수에 대한 변속기는 이전보다 조금 더 쉬운 방법입니다.
$ 네임 = 'http://library.example.com';
$ 조치 = 'http://library.example.com/api/soap/search';
$ 방법 = "searchrequest";
$ 결과 = $ 클라이언트 -> 전화 ($ 방법,
배열 ( 'searchrequest' "=> $ 매개 변수),
$ 네임, $ 조치);
마지막으로, 지난 몇 매개 변수를 설정하고 통화 자체는 내용입니다.
핸들링의 응답을 비누 요청이 다시없는 너무 다르다 나머지 응답 - 모두에서 제공 xml 형식과 유사합니다. 가 비누 응답을 운반의 추가 봉투 및 본문 요소이지만 종종 데이터에 존재하는 유사한 방식으로 이러한 요소입니다. 물론 일부 유사 처리를 사이에있다는 응답에서 매뉴얼을 요청하고에서 사용할 요청합니다. 두 방법이 제시 여기에있습니다.
모방의 출력을 올렸습와 나머지는 요청을 사용하는 이와 유사한 코드를 사용하여 수정 사항에 대한 몇 봉지 구성표 비누와 함께 사용합니다.
에코 "열쇠말 : ($ xml -> 본문 -> librarysearchresponse -> requestinfo ->
키워드) <br> ";
에코 "여기는 귀하의 ($ xml -> 본문 -> librarysearchresponse -> responseinfo -> resultcount)
결과 <br> ";
foreach ($ xml -> 본문 -> librarysearchresponse -> responseinfo -> 항목으로 & $ 품목)
(
에코 "($ 아이템 -> 제목)에 의해 ($ 아이템 -> 저자) <br>";
)
이렇게하면 동일한 출력을 생성 이전에 표시된대로 나머지 요청합니다. 참고 다른 문법을 사용하여 획득의 검색 키워드입니다. 그것이 아니라는 특성이 시간, 그래서 액세스 권한이 다르다.
액세스는 개체가 제공하는 사용할은 약간 차이가 방법과 함께 사용 simplexml하고 있지만 내부 데이터 구조가 아주 비슷합니다. 이 코드를 사용하여 작업을 수정 사용할 개체만이 몇 분 소요됩니다.
에코 "열쇠말 :"입니다.
$ xml [ '본문'] [ 'librarysearchresponse'] [ 'requestinfo'] [ '키워드']. "<br>";
에코 "여기는 귀하의
($ xml [ '본문'] [ 'librarysearchresponse'] [ 'responseinfo'] [ 'resultcount'])
결과 <br> ";
foreach ($ xml [ '본문'] [ 'librarysearchresponse'] [ 'responseinfo'] [ '항목을']로 & $ 품목)
(
에코 "($ 아이템 [ '제목'])에 의해 ($ 아이템 [ '저자']) <br>";
)
와 함께 사용할를 내부 데이터에 액세스 훨씬와 같은 방식으로 연관 배열, 그래서보다는 oo 방법을 사용하여 ->에 액세스하려면 자식 요소를 더욱 배열 정보가 포함됩니다. 이 요소는 출력을 동일하게하여 이전 예제입니다.
비누는 효과적인 방법은 쿼리 api 경우에 추가 오버헤드가 허용됩니다. 가 봉지의 모든 요소를 사용하면보다 쉽게 읽고, 그리고 변수 범위 내에서가 요청됩니다. 비누를 요청하실 수있습니다 작문을 만드는 것만 큼이나 간단합니다 그들을 한 번, 그 다음 바로 교체 주요 변수가있습니다. 또는, 그것은 또한 같은 사용할 수있는 도구를 사용하여 수행할 수있습니다. 접근에 비누 응답이 훨씬와 동일한 방식으로 수행할 수있습니다 나머지는 응답은 요청이 완료되면 수동으로합니다. 의 경우 요청을 완료와 함께 사용할를 접근 방식은 구조적 동일, 함께 불과 몇 사소한 변경 내용을 구문을 사용합니다.
Online: 541 users browsing the articles directory
|
|