"NuSOAP 시작하기"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-</source> +</syntaxhighlight>, -<source +<syntaxhighlight ))
 
(사용자 2명의 중간 판 30개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;NuSOAP 시작하기
;NuSOAP 시작하기
;NuSOAP 튜토리얼
;NuSOAP 튜토리얼, NuSOAP 설치
*PHP용 SOAP 도구
*PHP용 SOAP 도구
*서버+클라이언트 기능 둘다 들어있음
*서버+클라이언트 기능 둘다 들어있음


==nusoap 설치==
==nusoap 다운로드==
*http://sourceforge.net/projects/nusoap/ 접속
*http://sourceforge.net/projects/nusoap/ 접속
*[Download]
*[Download]
*기다리면 nusoap-0.9.5.zip 파일 자동 다운로드
*기다리면 nusoap-0.9.5.zip 파일 다운로드 시작됨(178 KB)
*압축해제
*자신의 웹서버의 DOCUMENT_ROOT 아래에 soap 폴더 생성
*lib 폴더 전체를 서버의 soap 폴더에 업로드


==server.php==
==설치==
<source lang='php'>
*자신의 서버 접속
*[[/usr/share/php/vendor]] 폴더에 nusoap-0.9.5.zip 업로드
<syntaxhighlight lang='console'>
[root@zetawiki vendor]# ll nusoap-0.9.5.zip
-rw-r--r-- 1 root root 182035 Aug 20 10:04 nusoap-0.9.5.zip
</syntaxhighlight>
*하위폴더 만들고 압축해제
<syntaxhighlight lang='console'>
[root@zetawiki vendor]# mkdir nusoap
[root@zetawiki vendor]# unzip nusoap-0.9.5.zip -dnusoap
Archive:  nusoap-0.9.5.zip
  inflating: nusoap/lib/changelog   
  inflating: nusoap/lib/class.nusoap_base.php 
... (생략)
  inflating: nusoap/samples/wsdlclient7.php 
  inflating: nusoap/samples/wsdlclient8.php 
  inflating: nusoap/samples/wsdlclient9.php
</syntaxhighlight>
 
==실습용 폴더 생성==
<syntaxhighlight lang='console'>
[root@zetawiki vendor]# cd /var/www/html/
[root@zetawiki html]# mkdir -p ex/soap
[root@zetawiki html]# cd ex/soap/
[root@zetawiki soap]#
</syntaxhighlight>
 
==nusoap-server.php==
<syntaxhighlight lang='php'>
<?php
<?php
require_once('/var/www/html/nusoap/lib/nusoap.php');
require_once 'vendor/nusoap/lib/nusoap.php';
$server = new nusoap_server;
 
$server = new nusoap_server();
$server->soap_defencoding = 'UTF-8';
 
$server->configureWSDL('Welcome');
$server->configureWSDL('Welcome');
$server->register("hello", array('name'=>'xsd:string'), array('return'=>'xsd:string'));
$server->register("sayHello", array('name'=>'xsd:string'), array('return'=>'xsd:string'));
function hello($name) { return "Hello, $name!"; }
$server->register("sayAnnyeong", array('name'=>'xsd:string'), array('return'=>'xsd:string'));
 
function sayHello($name) {
return "Hello, $name!";
}
function sayAnnyeong($name) {
return "안녕, $name!";
}
 
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
$server->service($HTTP_RAW_POST_DATA);
</source>
</syntaxhighlight>
*예시: http://jmnote.com/nusoap/server.php
*예시: http://zetawiki.com/ex/soap/nusoap-server.php
*예시: http://jmnote.com/nusoap/server.php?wsdl
*예시: http://zetawiki.com/ex/soap/nusoap-server.php?wsdl


==client.php==
==nusoap-client.php==
server.php와 client.php는 서로 다른 서버에 있는 경우가 많겠지만, 튜토리얼이므로 한 폴더에 두고 테스트해보자.
server.php와 client.php는 서로 다른 서버에 두는 것이 당연하겠지만, 실습이므로 한 폴더에 두고 테스트해보자.
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php
require_once '/var/www/html/nusoap/lib/nusoap.php';
require_once 'vendor/nusoap/lib/nusoap.php';
$client = new nusoap_client("http://jmnote.com/nusoap/server.php?wsdl", true);
 
$result = $client->call('hello', array('name'=>'John Smith'));
$client = new nusoap_client("http://zetawiki.com/ex/soap/nusoap-server.php?wsdl");
$client->decode_utf8 = false;
 
$result = $client->call('sayAnnyeong', array('name'=>'John Smith'));
print_r($result);
print_r($result);
</source>
// 안녕, John Smith!
*예시: http://jmnote.com/nusoap/client.php
</syntaxhighlight>
*예시: http://zetawiki.com/ex/soap/nusoap-client.php


==client_debug.php==
==nusoap-client-debug.php==
client.php와 기능은 같다. 오류메시지를 보여주기 때문에 디버그가 용이하다.
client.php와 기능은 같다. 오류메시지를 보여주기 때문에 디버그가 용이하다.
<source lang='php'>
<syntaxhighlight lang='php'>
<?php
<?php
require_once '/var/www/html/nusoap/lib/nusoap.php';
require_once 'vendor/nusoap/lib/nusoap.php';
function xmp($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function xmp($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
$client = new nusoap_client('http://jmnote.com/nusoap/server.php?wsdl');
 
$result = $client->call('hello', array('name'=>'John Smith'));
$client = new nusoap_client('http://zetawiki.com/ex/soap/nusoap-server.php?wsdl');
$client->decode_utf8 = false;
 
$result = $client->call('sayAnnyeong', array('name'=>'John Smith'));
$err = $client->getError();
$err = $client->getError();
if($client->fault) {
if($client->fault) {
55번째 줄: 98번째 줄:
return;
return;
}
}
echo 'OK: '; xmp($result);
echo 'OK: '; xmp($result);
echo '<h2>Request</h2>'; xmp(str_replace(">",">\n",$client->request));
echo '<h2>Request</h2>'; xmp(str_replace(">",">\n",$client->request));
echo '<h2>Response</h2>'; xmp(str_replace(">",">\n",$client->response));
echo '<h2>Response</h2>'; xmp(str_replace(">",">\n",$client->response));
</source>
</syntaxhighlight>
*예시: http://jmnote.com/nusoap/client_debug.php
*예시: http://zetawiki.com/ex/soap/nusoap-client-debug.php


==같이 보기==
==같이 보기==
*[[PHP SoapClient 사용해보기]]
*[[PHP SoapClient 사용해보기]]
*[[NuSOAP 기본 인증 적용]]
*[[NuSOAP 기본 인증 적용]]
*[[WSDL 캐시 비우기]]
*[[SOAP]]
*[[SOAP]]
*[[WSDL]]


==참고 자료==
==참고==
*http://stackoverflow.com/questions/9130117/nusoap-simple-server
*http://stackoverflow.com/questions/9130117/nusoap-simple-server


[[분류: NuSOAP]]
[[분류: NuSOAP]]
[[분류: 튜토리얼]]

2020년 11월 2일 (월) 02:56 기준 최신판

1 개요[ | ]

NuSOAP 시작하기
NuSOAP 튜토리얼, NuSOAP 설치
  • PHP용 SOAP 도구
  • 서버+클라이언트 기능 둘다 들어있음

2 nusoap 다운로드[ | ]

3 설치[ | ]

[root@zetawiki vendor]# ll nusoap-0.9.5.zip 
-rw-r--r-- 1 root root 182035 Aug 20 10:04 nusoap-0.9.5.zip
  • 하위폴더 만들고 압축해제
[root@zetawiki vendor]# mkdir nusoap
[root@zetawiki vendor]# unzip nusoap-0.9.5.zip -dnusoap
Archive:  nusoap-0.9.5.zip
  inflating: nusoap/lib/changelog    
  inflating: nusoap/lib/class.nusoap_base.php  
... (생략)
  inflating: nusoap/samples/wsdlclient7.php  
  inflating: nusoap/samples/wsdlclient8.php  
  inflating: nusoap/samples/wsdlclient9.php

4 실습용 폴더 생성[ | ]

[root@zetawiki vendor]# cd /var/www/html/
[root@zetawiki html]# mkdir -p ex/soap
[root@zetawiki html]# cd ex/soap/
[root@zetawiki soap]#

5 nusoap-server.php[ | ]

<?php
require_once 'vendor/nusoap/lib/nusoap.php';

$server = new nusoap_server();
$server->soap_defencoding = 'UTF-8';

$server->configureWSDL('Welcome');
$server->register("sayHello", array('name'=>'xsd:string'), array('return'=>'xsd:string'));
$server->register("sayAnnyeong", array('name'=>'xsd:string'), array('return'=>'xsd:string'));

function sayHello($name) {
	return "Hello, $name!";
}
function sayAnnyeong($name) {
	return "안녕, $name!";
}

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

6 nusoap-client.php[ | ]

server.php와 client.php는 서로 다른 서버에 두는 것이 당연하겠지만, 실습이므로 한 폴더에 두고 테스트해보자.

<?php
require_once 'vendor/nusoap/lib/nusoap.php';

$client = new nusoap_client("http://zetawiki.com/ex/soap/nusoap-server.php?wsdl");
$client->decode_utf8 = false;

$result = $client->call('sayAnnyeong', array('name'=>'John Smith'));
print_r($result);
// 안녕, John Smith!

7 nusoap-client-debug.php[ | ]

client.php와 기능은 같다. 오류메시지를 보여주기 때문에 디버그가 용이하다.

<?php
require_once 'vendor/nusoap/lib/nusoap.php';
function xmp($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }

$client = new nusoap_client('http://zetawiki.com/ex/soap/nusoap-server.php?wsdl');
$client->decode_utf8 = false;

$result = $client->call('sayAnnyeong', array('name'=>'John Smith'));
$err = $client->getError();
if($client->fault) {
	echo 'Fault: '; xmp($result);
	return;
}
if($err) {
	echo 'Error: '; xmp($err);
	return;
}

echo 'OK: '; xmp($result);
echo '<h2>Request</h2>'; xmp(str_replace(">",">\n",$client->request));
echo '<h2>Response</h2>'; xmp(str_replace(">",">\n",$client->response));

8 같이 보기[ | ]

9 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}