2012-06-02 89 views
0

我需要从android应用程序调用Web服务。我有在java中创建的web服务的wsdl文件 ,我没有 相同的源代码。 在java中,我使用“生成客户端”选项从 生成一个wsdl文件,然后使用Axis.jar通过我的java应用程序调用Web服务。 当我点击“生成客户端”选项时,文件生成 以及一些编译错误。但同样的事情,当我在一个java应用中做 时,生成的文件没有任何编译 错误。 请通知从android 未来的相同方式做同样的事情。 Regads,从android应用程序调用Web服务

+0

参见[这](http://stackoverflow.com/questions/297586/how-to-call-soap-web-service-with-android)问题在SO上。 – Jeshurun

回答

0

在android中,您可以使用kso​​ap库并调用所需的webservice。 包含使用构建路径的ksoap库并使用以下代码调用webservice。 找到KSOAP库在这个路径 Ksoap library path

import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.MarshalBase64; 
import org.ksoap2.serialization.PropertyInfo; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 

import android.app.Activity; 
import android.os.Bundle; 

public class SVCWebServiceActivity extends Activity { 
    /** Called when the activity is first created. */ 
    private static final String SOAP_ACTION = "http://tempuri.org/GetByteArray"; 
    private static final String METHOD_NAME = "GetByteArray"; 
    private static final String NAMESPACE = "http://tempuri.org/"; 
    private static final String URL = "http://IPAddress/Serviceforc/Service.asmx"; 
    private String byteStr = "srikar"; 
    private byte[] bytedata = byteStr.getBytes(); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     System.out.println("bytedata is "+bytedata[0]); 
     HttpTransportSE httpTransport = null; 
     MarshalBase64 marshal = null; 
     SoapObject request = null; 
     request = new SoapObject(NAMESPACE, METHOD_NAME); 
     PropertyInfo pi = new PropertyInfo();  
     pi.setName("value"); 
     pi.setValue(bytedata); 
     pi.setType(MarshalBase64.BYTE_ARRAY_CLASS); 
     request.addProperty(pi); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     marshal = new MarshalBase64(); 
     marshal.register(envelope); 
     envelope.setOutputSoapObject(request); 

     httpTransport = new HttpTransportSE(URL); 

     Object response; 
     try { 
      httpTransport.call(SOAP_ACTION, envelope); 
      response = envelope.getResponse(); 
     } catch (Exception exception) { 
      exception.printStackTrace(); 
      System.out.println("Exception is " + exception.toString()); 
      // strRes = exception.toString(); 
      response = exception.toString(); 

     } 
     System.out.println("Response is "+response.toString()); 
} 
} 
相关问题