如何从安卓设备调用.NET Web服务?

27

我需要从安卓应用中调用一个类似于 "http://192.168.1.19/TestWeb/WebService.asmx" 的URL的网络服务。

请问有没有人能提供一个完整的示例?


我不明白。你的Web服务是在.NET中的。安卓在哪里?HelloWorld方法在哪里? - John Saunders
谢谢您的编辑。到目前为止,您尝试了什么?您遇到了哪些困难? - John Saunders
请看这里: http://www.anddev.org/web_services_-_an_xml-rpc_client_for_android-t646.html - rangalo
你可以在这里找到一个例子(http://mypetprojects.blogspot.com/2009/05/communication-between-wcf-service-and.html)。希望能对你有所帮助。 - Niko Gamulin
我已经创建了ASP.NET MVC webservice。我正在努力从Android应用程序中调用此webservice。请帮忙。 - Karthick
显示剩余2条评论
1个回答

31

最终,我找到了自己问题的解决方案。

这是代码:

package projects.ksoap2sample;



import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import android.app.*;
import android.os.*;
import android.widget.TextView;

public class ksoap2sample extends Activity {
    /** Called when the activity is first created. */
    private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld";

    private static final String METHOD_NAME = "HelloWorld";

    private static final String NAMESPACE = "http://tempuri.org/";
    private static final String URL = "http://192.168.1.19/TestWeb/WebService.asmx";
    TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv=(TextView)findViewById(R.id.text1);
        call();

    }

    public void call()
    {
        try {

            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

            request.addProperty("passonString", "Rajapandian");

            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.setOutputSoapObject(request);

            HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
            androidHttpTransport.call(SOAP_ACTION, envelope);

            Object result = (Object)envelope.getResponse();

            tv.setText(result.toString());
        } catch (Exception e) {
            tv.setText(e.getMessage());
            }
    }
}

1
在这段代码中,如果我想将请求超时属性设置为30秒,应该在哪里设置?任何帮助将不胜感激。 - UMAR-MOBITSOLUTIONS
注意:此代码必须使用ksoap2的Android版本,j2me或j2se版本将无法工作。 - jondinham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接