1
私はJava WebサービスWelcomMsgを実装しており、Apache Axis上で動作しています。 WebサービスにはgreetUs()メソッドが1つしかありません。 "Greetings"という文字列を返します。 HttpTransportオブジェクトを使用して呼び出すと、例外が発生し、常に「false」になります。ksoap2経由でAndroidからJava Webサービスを呼び出す
ここに名前空間があります。コードを見て、欠落している/間違っていることを教えてください。私は、サービス、wsdlの内容、およびAndroidの石鹸のクライアントの内容に関するメソッドを与えました。
次のようにサービスのメソッドである。
<?xml version="1.0" encoding="UTF-8"?>
:
public class WelcomeMsg {
public String greetUs()
{
return "Greetings!!!";
}
}ここ
は、WSDLであります
<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クライアントは、次のとおりです。AndroidManifest.xmlをするandroid.permission.INTERNETあなた「:
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();
}
}
}