1

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();
        }
    }
}
4

1 に答える 1

2

「uses-permissionandroid:name = "android.permission.INTERNET」をAndroidManifest.xmlに挿入しましたか?

于 2010-11-29T19:22:12.413 に答える