2010-11-29 25 views
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(); 
     } 
    } 
} 

答えて

2

は、あなたが "名前=使用許可アンドロイド" をinsertetがありますか?

関連する問題