1

我已经实现了一个 Java Web 服务 WelcomMsg,它在 Apache Axis 上运行。Web 服务只有一种方法 greetUs()。它返回一个字符串“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();
        }
    }
}
4

1 回答 1

2

您是否将“uses-permission android:name="android.permission.INTERNET" 插入到 AndroidManifest.xml 中?

于 2010-11-29T19:22:12.413 回答