Java Web サービス WelcomMsg を実装し、Apache Axis で実行しています。この Web サービスには、greetUs() メソッドが 1 つしかありません。文字列「Greetings」を返します。HttpTransport オブジェクトを使用して呼び出すと、例外が発生し、常に「false」になります。
名前空間はここにあると思います。コードを調べて、不足しているものや間違っているものを教えてください。サービス、wsdl コンテンツ、および Android ソープ クライアント コンテンツに関するメソッドを提供しました。
サービス内のメソッドは次のとおりです。
public class WelcomeMsg {
public String greetUs()
{
return "Greetings!!!";
}
}
これがwsdlです:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:part element="impl:greetUsResponse" name="parameters">
</wsdl:part>
<wsdl:part element="impl:greetUs" name="parameters">
</wsdl:part>
<wsdl:operation name="greetUs">
<wsdl:input message="impl:greetUsRequest" name="greetUsRequest">
</wsdl:input>
<wsdl:output message="impl:greetUsResponse" name="greetUsResponse">
</wsdl:output>
</wsdl:operation>
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="greetUs">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="greetUsRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="greetUsResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:port binding="impl:WelcomeMsgSoapBinding" name="WelcomeMsg">
<wsdlsoap:address location="http://localhost:8080/NewWebService/services/WelcomeMsg"/>
</wsdl:port>
Android SOAP クライアントは次のとおりです。
package com.example.HelloDroid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.HttpTransportSE;
public class Droid extends Activity {
/** Called when the activity is first created. */
private static final String SOAP_ACTION = "DefaultNamespace";
private static final String METHOD_NAME = "greetUs";
private static final String NAMESPACE = "urn:DefaultNamespace";
private static final String URL = "http://192.168.186.136:12733/NewWebService/services/WelcomeMsg";
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView) findViewById(R.id.TextView01);
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=false;
envelope.setOutputSoapObject(request);
HttpTransportSE ht = new HttpTransportSE(URL);
try{
ht.call(SOAP_ACTION, envelope);
//tv.setText("http set");
SoapPrimitive sp= (SoapPrimitive) envelope.getResponse();
tv.setText("Msg from service: "+sp);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}