Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用android中的kSoap2在AsyncTask中获取soapObjet返回_Android_Android Asynctask_Asmx - Fatal编程技术网

如何使用android中的kSoap2在AsyncTask中获取soapObjet返回

如何使用android中的kSoap2在AsyncTask中获取soapObjet返回,android,android-asynctask,asmx,Android,Android Asynctask,Asmx,我想打电话给ASMX网络服务, 如何从doInBackground取回活动中的SoapObject或List ,web服务工作正常,它在日志文件上显示值 ,我的代码是,文件,我称之为web服务 import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject

我想打电话给ASMX网络服务, 如何从doInBackground取回活动中的SoapObject或List ,web服务工作正常,它在日志文件上显示值 ,我的代码是,文件,我称之为web服务

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;

public class WebserviceMainCategory {


    static String SOAP_ACTION = "http://tempuri.org/loadProductCatagory";
    static String METHOD_NAME = "loadProductCatagory";
    static String NAME_SPACE = "http://tempuri.org/";
    static String URL = "http://74.53.87.146/seharwebservice/Service.asmx";
    public  List<String> main_items = new ArrayList<String>();

    public static String[] namess ;
    static int s ;
    public static SoapObject soap;

    public  SoapObject webServiceMain_list() {

        SoapObject request = new SoapObject(NAME_SPACE, METHOD_NAME);

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

        envelope.implicitTypes = true;
        envelope.setAddAdornments(false);
        envelope.setOutputSoapObject(request);

        HttpTransportSE httpTransportSe = new HttpTransportSE(URL);
        httpTransportSe.debug = true;


        try {

            httpTransportSe.call(SOAP_ACTION, envelope);

            Object result = envelope.getResponse();

            soap = (SoapObject) result;

            /*
            SoapObject result2nd = (SoapObject) result;
            s = result2nd.getPropertyCount();
                        //String[]arrayLis = new String[s];

                        namess = new String[s];
                        for(int i=0; i<result2nd.getPropertyCount(); i++)
                        {
                            Log.d("ddd", result2nd.getPropertyAsString(i));
                            namess[i]=result2nd.getPropertyAsString(i);
                            Log.d("array", namess[i]);
                            main_items.add(result2nd.getPropertyAsString(i));
                        }
                    */


        } catch (IOException e) {
            e.printStackTrace();

        } catch (XmlPullParserException e) {
            e.printStackTrace();
        }
        return soap;    
    }

}
import java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入org.ksoap2.SoapEnvelope;
导入org.ksoap2.serialization.SoapObject;
导入org.ksoap2.serialization.SoapSerializationEnvelope;
导入org.ksoap2.transport.HttpTransportSE;
导入org.xmlpull.v1.XmlPullParserException;
导入android.util.Log;
公共类WebserviceMainCategory{
静态字符串SOAP_ACTION=”http://tempuri.org/loadProductCatagory";
静态字符串方法\u NAME=“loadProductCatagory”;
静态字符串名称\u空格=”http://tempuri.org/";
静态字符串URL=”http://74.53.87.146/seharwebservice/Service.asmx";
public List main_items=new ArrayList();
公共静态字符串[]名称;
静态int-s;
公共静态soapobjectsoap;
公共SoapObject WebService主列表(){
SoapObject请求=新的SoapObject(名称\空间、方法\名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(
第11版);
envelope.dotNet=true;
envelope.implicitTypes=true;
信封.装饰(假);
envelope.setOutputSoapObject(请求);
HttpTransportSE HttpTransportSE=新的HttpTransportSE(URL);
httpTransportSe.debug=true;
试一试{
调用(SOAP_操作,信封);
对象结果=envelope.getResponse();
soap=(SoapObject)结果;
/*
SoapObject result2nd=(SoapObject)结果;
s=result2nd.getPropertyCount();
//String[]arrayLis=新字符串[s];
names=新字符串[s];
对于(inti=0;i您喜欢这样做

private SoapObject aa;
class Main_itemsList extends AsyncTask<Void, Void, SoapObject> {
    @Override
    protected SoapObject doInBackground(Void... params) {
        // this is executed in a background thread.
        // the result is returned to the UI thread via onPostExecute
        WebserviceMainCategory mAuth = new WebserviceMainCategory();
        return  mAuth.webServiceMain_list();
    }
    @Override
    protected void onPostExecute(SoapObject result) {
        // aa is inside your Activity / Fragment which
        // contains this class
        aa = result;
    }
}

// you just need to start the task somewhere
public void onSomething() {
    // this will set "aa" when it's done.
    new Main_itemsList().execute();
}
私有对象aa;
类Main\u itemsList扩展异步任务{
@凌驾
受保护的SoapObject doInBackground(无效…参数){
//这是在后台线程中执行的。
//结果通过onPostExecute返回给UI线程
WebserviceMainCategory mAuth=新的WebserviceMainCategory();
返回mAuth.webServiceMain_list();
}
@凌驾
受保护的void onPostExecute(SoapObject结果){
//aa在你的活动/片段中
//包含此类
aa=结果;
}
}
//你只需要在某个地方开始这项任务
在某物上的公共无效(){
//完成后,将设置“aa”。
新的Main_itemsList().execute();
}
如果启动一个
AsyncTask
,它将在后台线程中执行您在
doInBackground
中定义的任何操作。返回的结果将传输回UI线程,以
onPostExecute
。在那里,您将结果“发布”到您的活动或片段中。

您喜欢这样做吗

private SoapObject aa;
class Main_itemsList extends AsyncTask<Void, Void, SoapObject> {
    @Override
    protected SoapObject doInBackground(Void... params) {
        // this is executed in a background thread.
        // the result is returned to the UI thread via onPostExecute
        WebserviceMainCategory mAuth = new WebserviceMainCategory();
        return  mAuth.webServiceMain_list();
    }
    @Override
    protected void onPostExecute(SoapObject result) {
        // aa is inside your Activity / Fragment which
        // contains this class
        aa = result;
    }
}

// you just need to start the task somewhere
public void onSomething() {
    // this will set "aa" when it's done.
    new Main_itemsList().execute();
}
私有对象aa;
类Main\u itemsList扩展异步任务{
@凌驾
受保护的SoapObject doInBackground(无效…参数){
//这是在后台线程中执行的。
//结果通过onPostExecute返回给UI线程
WebserviceMainCategory mAuth=新的WebserviceMainCategory();
返回mAuth.webServiceMain_list();
}
@凌驾
受保护的void onPostExecute(SoapObject结果){
//aa在你的活动/片段中
//包含此类
aa=结果;
}
}
//你只需要在某个地方开始这项任务
在某物上的公共无效(){
//完成后,将设置“aa”。
新的Main_itemsList().execute();
}

如果启动
AsyncTask
,它将在后台线程中执行您在
doInBackground
中定义的任何操作。返回的结果将传输回UI线程,以
onPostExecute
。在那里,您将获取结果并“发布”将其添加到您的活动或片段。

谢谢您的回复。.我创建了一个静态SoapObject。.当我调用函数时,它没有给我错误,但当我访问aa SoapObject时,它给我错误,即使它没有在日志文件new Main_itemsList()上打印aa的值。对于(int i=0;i您无法立即访问
aa
,因为在
AsyncTask
在将来某个时候完成之前,它不会被设置。如果您想打印它,请从
onPostExecute
触发一个问题..我想调用web服务进行登录,获取asmx web服务的用户名和密码,如何强制延迟一些时间从webservice获取用户名和密码的输入法…我调用sleep,但应用程序崩溃..谢谢如果您执行异步操作,您不会等待它们发生,而是使用异步操作完成时发生的事件触发所有更新。在您的情况下:启动登录任务,然后不执行任何操作,只需将UI保留在某个时间“请稍候,我正在加载东西”状态,一旦加载完成,您将再次更新UI以处理感谢您的回复..我创建了一个静态SoapObject..当我调用函数时,它没有给我错误,但当我访问aa SoapObject时,它给我错误,即使它没有在日志文件new Main_itemsList()上打印aa的值。execute()对于(int i=0;i您无法立即访问
aa
,因为在
AsyncTask
在将来某个时候完成之前,它不会被设置。如果您想打印它,请从
onPostExecute
触发一个问题..我想调用web服务进行登录,获取asmx web服务的用户名和密码,如何强制延迟一些时间从webservice获取用户名和密码的输入法…我调用sleep,但应用程序崩溃..谢谢如果您执行异步操作,您不会等待它们发生,而是使用异步操作完成时发生的事件触发所有更新。在您的情况下:启动日志