0

AndroidアプリからWebサービスを呼び出す必要があります。Javaで作成されたWebサービスのwsdlファイルがありますが、同じソースコードはありません。Javaでは、「クライアントの生成」オプションを使用してwsdlからファイルを生成し、Axis.jarを使用してJavaアプリからWebサービスを呼び出します。「クライアントの生成」オプションをクリックすると、いくつかのコンパイルエラーとともにファイルが生成されます。しかし、Javaアプリで行っている場合と同じように、生成されたファイルにはコンパイルエラーはありません。アンドロイドの見通しから同じことを行う適切な方法を教えてください。よろしく、

4

1 に答える 1

0

Android では、ksoap ライブラリを使用して、必要な Web サービスを呼び出すことができます。ビルド パスを使用して ksoap ライブラリを含め、次のコードを使用して Web サービスを呼び出します。このパスで ksoap ライブラリを見つける Ksoap ライブラリ パス

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());
}
}
于 2012-06-02T04:11:10.310 に答える