ここに、Android 用の KSOAP2 を使用して Web サービスを利用するために使用するクラスがあります。
import org.ksoap2.transport.AndroidHttpTransport;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;
public class webServices {
public static String METHOD_NAME;
public static String NAMESPACE;
public static String URL;
public SoapSerializationEnvelope Envelope_class = null;
private SoapObject request;
public webServices(String NombreMetodo, String Namespace, String URLWService )
{
METHOD_NAME = NombreMetodo;
NAMESPACE= Namespace;
URL= URLWService;
request= GetSoapObject(METHOD_NAME);
}
public void AddProperty(String Name, Object Value ,Type tipo)
{
PropertyInfo prop = new PropertyInfo();
prop.setName(Name);
prop.setValue(Value);
prop.setType(tipo);
request.addProperty(prop);
}
private SoapObject GetSoapObject (String Methodname)
{
return new SoapObject(NAMESPACE,METHOD_NAME);
}
private static SoapSerializationEnvelope GetEnvelope(SoapObject Soap)
{
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Soap);
return envelope;
}
public SoapObject CallWebService() throws IOException, XmlPullParserException
{
SoapObject response=null;
SoapSerializationEnvelope Envelope = GetEnvelope(request);
Envelope.bodyOut=request;
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);
androidHttpTransport.debug=true;
try
{
androidHttpTransport.call(NAMESPACE + METHOD_NAME, Envelope);
response = (SoapObject) Envelope.getResponse();
Envelope_class = Envelope;
}
catch(Exception e)
{
e.printStackTrace();
Log.d("AndroidRequest",androidHttpTransport.requestDump);
Log.d("AndroidResponse",androidHttpTransport.responseDump);
return null;
}
return response;
}
public Object CallWebServicePrimitive() throws SoapFault
{
SoapObject request = GetSoapObject(METHOD_NAME);
SoapSerializationEnvelope Envelope = GetEnvelope(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
androidHttpTransport.call(NAMESPACE + METHOD_NAME, Envelope);
} catch (IOException e) {
Log.d("ErrorApp", e.getMessage().toString());
} catch (XmlPullParserException e) {
Log.d("ErrorApp", e.getMessage().toString());
}
SoapPrimitive response= (SoapPrimitive) Envelope.getResponse();
return response;
}
}
WCF サービスを使用している場合は、次を変更する必要があります。
SoapSerializationEnvelope(SoapEnvelope.VER11) から: SoapSerializationEnvelope(SoapEnvelope.VER12)
URLをSVC URLに向けます