php soap example ksoap2 example
ksoap 를 사용하기 위해서는 먼저
soap와 wsdl이 무엇인지 알아야 한다.
php5 에서는 soap를 lib형태로 지원하기 때문에 nusoap를 별도로 설정할 필요가 없으며
아래의 사이트에 자세한 설명이 나와 있다.
server2와 client4, client5 를 정확히 이해할 수 있어야 한다.
php soap example
soap 의 server 와 client 의 작성 및 사용 예제
http://devzone.zend.com/article/689#Heading1
Android ksoap2 project Home
http://code.google.com/p/ksoap2-android/
WSDL
http://www.w3.org/TR/wsdl
안드로이드에서 ksoap2를 사용하기 위해서는
1. 프로젝트에서 lib 폴더 생성
2. lib 폴더에 ksoap2의 jar를 추가 하고 preference 에 등록 하면
그림과 같이 생성이 된다.
AndroidMainfest.xml 에
<uses-permission android:name="android.permission.INTERNET"/>을 추가하고
Actvity 에 다음과 같이 코드를 삽입하면 된다.
선언부에 추가
//============================================================
private static final String SOAP_ACTION = "sayHello";
private static final String METHOD_NAME = "sayHello";
private static final String NAMESPACE = "http://192.168.0.210/HelloService.wsdl";
private static final String URL = "http://192.168.0.210/rpcrouter.php";
onCreate 안에 추가
//============================================================
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("fristName", "ibm");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
// Get the SAOP Envelope back and the extract the body
SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
String XXXX = (String) resultsRequestSOAP.getProperty("greeting");
Log.d("==="," "+XXXX.toString());
} catch(Exception E) {
}
//============================================================
실행하면 가장 이해가 안되었던 부분이
선언부에 있는 NAMESPACE 와 URL 이 였는데
NAMESPACE 는 wsdl 에 선언되어 있는 targetnamespace 이고
URL 은 php에서 server쪽soap구현 부분이라고 생각하면 된다.
php의 경우
server 를 구현하고 client를 호출하면 wsdl에 정의 되어 있는 내용대로 동작한다.
ksoap2를 이용할 경우
어떤 방식으로 php에 있는 client를 실행할지 몰라서 삽질을 좀 했는데
검색해 봐도 잘 이해가 안되는 부분이 많고쉽게 설명한 사람도 없는것 같아서 기록만든다.
위의 소스에서
우선
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
를 실행한다.
이는 wsdl 에 정의되어 있는 client 객체와 실행해야 하는 function를 정의한다고 생각하면 되고
request.addProperty("fristName", "ibm");
addProperty는 wsdl 에 message 부분에 선언되어 있는 input쪽 놈의 필드를 의미한다.
그리고, 가져오는 놈은
resultsRequestSOAP.getProperty("greeting");
함수를 이용하는데 이 또한 wsdl의 message 부분에 output 쪽 놈의 필드이다.
실행을 하면 logcat에 good job이라고 출력되도록 만들어 놓긴 했는데
소스정리하여 zip형태로 올려야 겠다.
soap와 wsdl이 무엇인지 알아야 한다.
php5 에서는 soap를 lib형태로 지원하기 때문에 nusoap를 별도로 설정할 필요가 없으며
아래의 사이트에 자세한 설명이 나와 있다.
server2와 client4, client5 를 정확히 이해할 수 있어야 한다.
php soap example
soap 의 server 와 client 의 작성 및 사용 예제
http://devzone.zend.com/article/689#Heading1
Android ksoap2 project Home
http://code.google.com/p/ksoap2-android/
WSDL
http://www.w3.org/TR/wsdl
안드로이드에서 ksoap2를 사용하기 위해서는
1. 프로젝트에서 lib 폴더 생성
2. lib 폴더에 ksoap2의 jar를 추가 하고 preference 에 등록 하면
그림과 같이 생성이 된다.
AndroidMainfest.xml 에
<uses-permission android:name="android.permission.INTERNET"/>을 추가하고
Actvity 에 다음과 같이 코드를 삽입하면 된다.
선언부에 추가
//============================================================
private static final String SOAP_ACTION = "sayHello";
private static final String METHOD_NAME = "sayHello";
private static final String NAMESPACE = "http://192.168.0.210/HelloService.wsdl";
private static final String URL = "http://192.168.0.210/rpcrouter.php";
onCreate 안에 추가
//============================================================
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("fristName", "ibm");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);
try {
androidHttpTransport.call(SOAP_ACTION, envelope);
// Get the SAOP Envelope back and the extract the body
SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;
String XXXX = (String) resultsRequestSOAP.getProperty("greeting");
Log.d("==="," "+XXXX.toString());
} catch(Exception E) {
}
//============================================================
실행하면 가장 이해가 안되었던 부분이
선언부에 있는 NAMESPACE 와 URL 이 였는데
NAMESPACE 는 wsdl 에 선언되어 있는 targetnamespace 이고
URL 은 php에서 server쪽soap구현 부분이라고 생각하면 된다.
php의 경우
server 를 구현하고 client를 호출하면 wsdl에 정의 되어 있는 내용대로 동작한다.
ksoap2를 이용할 경우
어떤 방식으로 php에 있는 client를 실행할지 몰라서 삽질을 좀 했는데
검색해 봐도 잘 이해가 안되는 부분이 많고쉽게 설명한 사람도 없는것 같아서 기록만든다.
위의 소스에서
우선
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
를 실행한다.
이는 wsdl 에 정의되어 있는 client 객체와 실행해야 하는 function를 정의한다고 생각하면 되고
request.addProperty("fristName", "ibm");
addProperty는 wsdl 에 message 부분에 선언되어 있는 input쪽 놈의 필드를 의미한다.
그리고, 가져오는 놈은
resultsRequestSOAP.getProperty("greeting");
함수를 이용하는데 이 또한 wsdl의 message 부분에 output 쪽 놈의 필드이다.
실행을 하면 logcat에 good job이라고 출력되도록 만들어 놓긴 했는데
소스정리하여 zip형태로 올려야 겠다.
댓글
댓글 쓰기