2010-11-29 74 views
1

J'ai implémenté un service Web Java WelcomMsg et il fonctionne sur Apache Axis. Le service Web a une seule méthode greetUs(). Il renvoie une chaîne "Salutations": Lorsque j'appelle en utilisant l'objet HttpTransport, j'obtiens une exception et je reçois toujours "faux".Appel d'un service Web Java à partir d'Android via ksoap2

Je suppose que l'espace de noms est ici. S'il vous plaît regardez dans le code et dites-moi ce qui manque/incorrect. J'ai donné la méthode sur le service, le contenu de wsdl, et le contenu de client de savon d'Android.

La méthode du service est la suivante:

public class WelcomeMsg { 
public String greetUs() 
{ 

    return "Greetings!!!"; 
} 

}

Voici le 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> 

Le client Android Soap est la suivante:

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

Répondre

2

Avez-vous insertet la "utilise-permission android: name =" android.permission.INTERNET » au AndroidManifest.xml?