2 qq 34823722 qq_34823722 于 2016.05.04 21:28 提问

android ksoap2调用webservice android端代码应该怎么写 跪求!

这是我在别人那里拔下来的代码 可以连接webservice 我想修改成可以返回数据库数据的 webservice已经可以实现查询数据库 只是在这我不会改 求求你们帮帮我 在线等 如果可以我发红包感谢 谢谢大家了
package com.bang.testwebservicecall;

import java.io.IOException;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpResponseException;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {
TextView tvMessage;
final String METHOD_HELLO_WORLD = "HelloWorld";
final String METHOD_ECHO_MESSAGE = "selectAllCargoInfor";
//服务器链接
final String WEB_SERVICE_URL = "http://192.168.2.160:8080/Service1.asmx?WSDL";
final String Namespace = "http://192.168.2.160/";//命名空间
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initBtn();// 初始化按钮
initTv();
}

private void initTv() {
    tvMessage = (TextView) this.findViewById(R.id.tvMessage);
}

private void initBtn() {
    View btnHelloWorld = this.findViewById(R.id.btnHelloWorld);
    btnHelloWorld.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Map<String, String> values = new HashMap<String, String>();
            values.put("selectAllCargoInforResule", "");
            Request(METHOD_HELLO_WORLD);
        }
    });

    View btnEchoMessage = this.findViewById(R.id.btnEchoMessage);
    btnEchoMessage.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Map<String, String> values = new HashMap<String, String>();
            values.put("msg", "这是Android手机发出的信息");
            Request(METHOD_ECHO_MESSAGE, values);
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

/**
 * 调用WebService
 * 
 * @return WebService的返回值
 * 
 */
public String CallWebService(String MethodName, Map<String, String> Params) {
    // 1、指定webservice的命名空间和调用的方法名

    SoapObject request = new SoapObject(Namespace, MethodName);
    // 2、设置调用方法的参数值,如果没有参数,可以省略,
    if (Params != null) {
        Iterator iter = Params.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            request.addProperty((String) entry.getKey(),
                    (String) entry.getValue());
        }
    }
    // 3、生成调用Webservice方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
            SoapEnvelope.VER12);
    envelope.bodyOut = request;
    // c#写的应用程序必须加上这句
    envelope.dotNet = true;
    HttpTransportSE ht = new HttpTransportSE(WEB_SERVICE_URL);
    // 使用call方法调用WebService方法
    try {
        ht.call(null, envelope);
    } catch (HttpResponseException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }
    try {
        final SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
        if (result != null) {
            Log.d("----收到的回复----", result.toString());
            return result.toString();
        }

    } catch (SoapFault e) {
        Log.e("----发生错误---", e.getMessage());
        e.printStackTrace();
    }
    return null;
}

/**
 * 执行异步任务
 * 
 * @param params
 *            方法名+参数列表(哈希表形式)
 */
public void Request(Object... params) {
    new AsyncTask<Object, Object, String>() {

        @Override
        protected String doInBackground(Object... params) {
            if (params != null && params.length == 2) {
                return CallWebService((String) params[0],
                        (Map<String, String>) params[1]);
            } else if (params != null && params.length == 1) {
                return CallWebService((String) params[0], null);
            } else {
                return null;
            }
        }

        protected void onPostExecute(String result) {
            if (result != null) {
                tvMessage.setText("服务器回复的信息 : " + result);
            }
        };

    }.execute(params);
}

}

1个回答

devmiao
devmiao   Ds   Rxr 2016.05.05 07:23
已采纳
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android通过ksoap2这个框架调用webservice大讲堂
昨天有人问我Android怎么连接mysql数据库,和对数据库的操作呀,我想把,给他说说json通信,可是他并不知道怎么弄,哎算了吧,直接叫他用ksoap吧,给他说了大半天,好多零碎的知识,看来还是有必要把这些东西整合起来,一方面自己有时候也看,另一方面当然是能帮助没有做个的小伙伴,其实东西不是很多,就是讲的有点详细,不怕多,就怕不仔细, WebServices简介 Web services是一
在Android 中使用KSOAP2调用WebService
在Android 中使用KSOAP2调用WebService在Android 中使用KSOAP2调用WebService在Android 中使用KSOAP2调用WebService
一个ksoap2-android调用webService的封装库
WebService 基本概念 WebService是一种基于SOAP协议的远程调用标准,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK没有直接调用webservice的库,最常用的是ksoap2-android 库。ksoap2库对于Android端调用WebService,有两种方式,一种自己编写代码主要通过URL获得 HttpUrlConn
Ksoap2调用webservice中连接超时的判断方法(如何判断超时?)
问题背景: 项目中安卓端使用ksoap2调用webservice的函数获取数据。 在服务端发送给客户端的数据里,除了展示给用户的数据之外,还需要包含一些额外的逻辑代码给客户端。 如: 客户端登录一个用户,客户端发送了用户名aaa+密码111给服务端,那么服务端对aaa+111进行验证后,如果成功,也许返回aaa的详细资料(这是数据),还需要返回额外的信息提示客户端是登录成功?还是失
android通过ksoap访问webservice方法传递一个复杂对象参数
1.webservice方法要传递参数的对象中包含了日期类型,guid类型。如下所示: POST /MyWebService.asmx HTTP/1.1 Host: 192.168.11.62 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/AddMainte
android使用ksoap2调用webservice接口返回错误HTTP status: 500
返回HTTP status: 500原因主要是服务器运行出错。 一般这种错能通过调试找出问题。 但这次遇到的一个问题是无法通过调试找出来的。 错误描述: 用IE调用webservice函数接口能正确返回结果,但是在手机上调用却出现HTTP status: 500的错误。 错误原因: 在被调用的函数内调用了其他函数。 note:不知道是不是ksoap2版本问题,我用的是3.
android ksoap2下webservice的 https请求
参考okhttp调用https实现自签名SSL证书: http://www.cnblogs.com/tommylemon/p/5454303.html stackoverflow:How to use Ksoap2 on ssl (https) connection - Android http://stackoverflow.com/questions/28583614/how-to-us
andorid使用ksoap2进行WebService通信
WebService 是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方类库(KSOAP2)来调用WebService。 示例代码分为两部分,android端与Web端(Android studio,VS2015) Web端 使用VS创建一个新项目
对多线程下载文件的理解和使用ksoap2-android调用WebService的操作步骤
1、首先创建URL对象。 2、获取指定URL对象锁指向资源的大小 3、在本地磁盘创建一个与网络资源相同大小的空文件 4、计算每条线程应该下载网络资源的哪个部分(从哪个字节开始,到哪个字节结束) 5、依次创建,启动多条线程来下载网络资源的指定部分 计算每条线程下载网络资源的哪个部分需要用到RandomAccessFile类,它是一个直接继承Object的,独立的类。 通过Rand
Android使用ksoap2调用webservice
Android使用ksoap2调用webservice,使用网上公开的免费接口测试,介绍了如何下载导入ksoap2,以及如何使用AsyncTask调用接口的过程