kSoap2 HttpTransportSE不api11和更高的API工作 [英] kSoap2 HttpTransportSE does not work with api11 and higher apis

查看:313
本文介绍了kSoap2 HttpTransportSE不api11和更高的API工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前devoloping和使用kso​​ap2 Web服务应用程序。
我使用ksoap2-机器人组装-2.6.0-JAR与 - dependencies.jar

下面是我的问题。

我可以succesfuly收到api10和更低版本的数据。 (*在我
电话和虚拟机)

但是,当我测试我的应用程序在Android的虚拟机是API 11
和更高版本。

HttpTransportSE不起作用。

我的codeS(不是全部)

  SoapSerializationEnvelope soapEnvol =新
SoapSerializationEnvelope(SoapEnvelope.VER11);
HttpTransportSE setConn =新HttpTransportSE(URL);     尝试{
     setConn.call(SOAP_ACTION,soapEnvol);
    }
     赶上{例外五)
    {
          返回null;
    }

setConn.call(SOAP_ACTION,soapEnvol); 总是落在捉对
API 11 AV机器。

什么,我缺少什么?
感谢媒体链接。

编辑:(全code响应)

 公开名单<&HashMap的LT;字符串,字符串>> duyurulariListeOlarakGetir(){
        SoapObject ISTEK =新SoapObject空间(namespace,METHOD_NAME);        istek.addProperty(用户,123);
        istek.addProperty(通,123);
        istek.addProperty(APPID,1);        SoapSerializationEnvelope soapZarf =新SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapZarf.dotNet = TRUE;
        soapZarf.setOutputSoapObject(ISTEK);        HttpTransportSEbaglantıKur=新HttpTransportSE(URL);        清单<&HashMap的LT;字符串,字符串>> fillMaps =新的ArrayList<&HashMap的LT;字符串,字符串>>();        尝试{            baglantıKur.debug=真;
            baglantıKur.call(SOAP_ACTION,soapZarf);            SoapObject sonuclar =(SoapObject)soapZarf.getResponse();            INT TOTALCOUNT = sonuclar.getPropertyCount();
            如果(TOTALCOUNT大于0){
                对(INT detailCount = 0; detailCount&下; TOTALCOUNT; detailCount ++){                    SoapObject pojoSoap =(SoapObject)sonuclar.getProperty(detailCount);
                    HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();                    map.put(duyuruID,pojoSoap.getProperty(duyuruID)的toString());
                    map.put(duyuruMetin,pojoSoap.getProperty(duyuruMetin)的toString());
                    map.put(duyuruSaat,pojoSoap.getProperty(duyuruSaat)的toString());
                    map.put(duyuruBaslik,pojoSoap.getProperty(duyuruBaslik)的toString());
                    map.put(duyuruTarih,pojoSoap.getProperty(duyuruTarih)的toString());
                    map.put(kurumID,pojoSoap.getProperty(duyuruSilindi)的toString());
                    map.put(uygulamaID,pojoSoap.getProperty(duyuruSilindi)的toString());
                    map.put(duyuruSilindi,pojoSoap.getProperty(duyuruSilindi)的toString());                    fillMaps.add(地图);
                }
            }其他
                返回null;
        }赶上(例外五){
            HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>();            map.put(duyuruID,);
            map.put(duyuruMetin,Bağlantıkurulamadı);
            map.put(duyuruSaat,Bağlantıkurulamadı);
            map.put(duyuruBaslik,Bağlantıkurulamadı);
            map.put(duyuruTarih,Bağlantıkurulamadı);
            map.put(kurumID,Bağlantıkurulamadı);
            map.put(uygulamaID,Bağlantıkurulamadı);
            map.put(duyuruSilindi,Bağlantıkurulamadı);            fillMaps.add(地图);
            返回fillMaps;
        }
        返回fillMaps;
    }


解决方案

这可能与事实,即在API的11及以上accesing在主线程净不允许你可能需要使用异步任务。我有它使用JSON对象来获得数据的应用程序,我最初codeD它只是在OnCreate(非常小code)..它在我的手机工作得很好..但是当我试图在我的平板电脑(ICS ),它给了我的错误,在我看到一个异常调试,当我GOOGLE了它,我发现了这个问题,希望它可以帮助你,干杯!

I am currently devoloping and app which is using ksoap2 web service. I am using "ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar"

Here is my problem.

I can succesfuly receive data on api10 and lower versions. (*on my phone and virtual machines)

But when ı tested my app on Android Virtual machines which is api 11 and higher versions.

HttpTransportSE does not work.

my codes;(not all of)

SoapSerializationEnvelope soapEnvol= new
SoapSerializationEnvelope(SoapEnvelope.VER11);
HttpTransportSE setConn = new HttpTransportSE(URL);

     try {
     setConn.call(SOAP_ACTION, soapEnvol);
    }
     catch{Exception e)
    {
          return null;
    }

""" setConn.call(SOAP_ACTION, soapEnvol); """ always falls to catch on api 11 av machines.

what i am missing? Thanks allready.

edit: (Full code respond)

public List<HashMap<String, String>> duyurulariListeOlarakGetir() {
        SoapObject istek = new SoapObject(NAMESPACE, METHOD_NAME);

        istek.addProperty("user", "123");
        istek.addProperty("pass", "123");
        istek.addProperty("appID", "1");

        SoapSerializationEnvelope soapZarf = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapZarf.dotNet = true;
        soapZarf.setOutputSoapObject(istek);

        HttpTransportSE baglantıKur = new HttpTransportSE(URL);

        List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();

        try {

            baglantıKur.debug=true;
            baglantıKur.call(SOAP_ACTION, soapZarf);

            SoapObject sonuclar = (SoapObject) soapZarf.getResponse();

            int totalCount = sonuclar.getPropertyCount();
            if (totalCount > 0) {
                for (int detailCount = 0; detailCount < totalCount; detailCount++) {

                    SoapObject pojoSoap = (SoapObject) sonuclar.getProperty(detailCount);
                    HashMap<String, String> map = new HashMap<String, String>();

                    map.put("duyuruID", pojoSoap.getProperty("duyuruID").toString());
                    map.put("duyuruMetin", pojoSoap.getProperty("duyuruMetin").toString());
                    map.put("duyuruSaat", pojoSoap.getProperty("duyuruSaat").toString());
                    map.put("duyuruBaslik", pojoSoap.getProperty("duyuruBaslik").toString());
                    map.put("duyuruTarih", pojoSoap.getProperty("duyuruTarih").toString());
                    map.put("kurumID", pojoSoap.getProperty("duyuruSilindi").toString());
                    map.put("uygulamaID", pojoSoap.getProperty("duyuruSilindi").toString());
                    map.put("duyuruSilindi", pojoSoap.getProperty("duyuruSilindi").toString());

                    fillMaps.add(map);
                }
            } else
                return null;
        } catch (Exception e) {
            HashMap<String, String> map = new HashMap<String, String>();

            map.put("duyuruID", "");
            map.put("duyuruMetin", "Bağlantı kurulamadı");
            map.put("duyuruSaat", "Bağlantı kurulamadı");
            map.put("duyuruBaslik", "Bağlantı kurulamadı");
            map.put("duyuruTarih", "Bağlantı kurulamadı");
            map.put("kurumID", "Bağlantı kurulamadı");
            map.put("uygulamaID","Bağlantı kurulamadı");
            map.put("duyuruSilindi", "Bağlantı kurulamadı");

            fillMaps.add(map);
            return fillMaps;
        }
        return fillMaps;
    }

解决方案

This may be related to the fact that in apis 11 and above accesing the net in Main thread is not allowed you may have to use ASYNC task.. I had an app which used JSON objects to get data , i had initially coded it simply in the onCreate (very small code) .. it worked fine on my phone.. but when i tried it on my tablet (ICS) it gave me errors, in the debug i saw an exception , when i googled it I found out the problem , hope it helps you, cheers!

这篇关于kSoap2 HttpTransportSE不api11和更高的API工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆