Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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 如何从soap获取数据_Android_Web Services_Soap_Ksoap - Fatal编程技术网

Android 如何从soap获取数据

Android 如何从soap获取数据,android,web-services,soap,ksoap,Android,Web Services,Soap,Ksoap,失去反应的是 SoapObject request=new SoapObject(NAMESPACE, METHODNAME); request.addProperty("EventID",1);//in soap event value is string SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=tr

失去反应的是

 SoapObject request=new SoapObject(NAMESPACE, METHODNAME);
    request.addProperty("EventID",1);//in soap event value is string

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

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    try {
        androidHttpTransport.call(SOAPACTION, envelope);
        SoapObject response = (SoapObject) envelope.getResponse();
        // SoapPrimitive response1 = (SoapPrimitive) envelope.getResponse();
        System.out.println("No of Datas are "+response.getPropertyCount()+response);//this returns count as 8
        System.out.println("No of Datas are "+response.getAttributeCount()+response);//this returns count as 0
但是对于EventID=1,它返回

 anyType{
 eventID=anyType{};
 weddingVenue=anyType{}; 
   weddingDate=anyType{};
 bridesName=anyType{}; 
groomsName=anyType{};
 passwordAvailable=anyType{};
thumbnailImage=anyType{}; 
galleryImages=anyType{};
}
1
聚会场所
2014年4月26日上午12:00:00
我们有一些最长的名字
基思·泰斯勒
假的

如何获得eventID=1的上述详细信息,如WeddingVincement=“The Party Place”。

我建议您创建一个数据类,用于响应:

<eventID>1</eventID>
<weddingVenue>The Party Place</weddingVenue>
<weddingDate>4/26/2014 12:00:00 AM</weddingDate>
<bridesName>We have some of the Longest NamesX</bridesName>
 <groomsName>Keith Tessler</groomsName>
<passwordAvailable>False</passwordAvailable>
 <thumbnailImage/>
<galleryImages/>
然后,在名为data的代码(上面的onCreate)的顶部创建一个公共MyData对象。然后替换

String eventID ="";
String weddingVenue ="";
String weddingDate ="";
String bridesName ="";
String groomsName ="";
String passwordAvailable ="";
String thumbnailImage ="";
String galleryImages ="";
使用将从数据类创建对象并填充属性的代码。试试这个

System.out.println("No of Datas are "+response.getPropertyCount()+response);
System.out.println("No of Datas are "+response.getAttributeCount()+response);
在此之后,您可以通过编写所需的代码来获取对象的属性。请注意,我在这段代码中可能有错误,因为我刚刚写下了它,并且没有可用的编辑器。返回给我的SOAP对象类型还包括信封详细信息,因此main=response.getProperty(0)只是一个猜测,希望它能起作用。我没有使用ArrayList,因为服务似乎通过提供属性返回了婚礼细节。希望这能有所帮助,一旦我接触到Eclipse,我将尝试编辑并修复这里的错误

这段代码取自我的项目,但我的信封与你的不同。希望有帮助:

androidHttpTransport.call(SOAPACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
SoapObject main = (SoapObject)response.getProperty(0); //your xml style does not inclue envelope details so i guess it will require 0th property to reach table


data.eventID = main.getProperty("eventID").toString();
data.weddinVenue = main.getProperty("weddingVenue").toString();
data.weddinDate = main.getProperty("weddingDate").toString();
data.bridesName = main.getProperty("bridesName").toString();
data.groomsName = main.getProperty("groomsName").toString();
data.passwordAvailable = main.getProperty("passwordAvailable").toString();
data.galleryImage = main.getProperty("galleryImage").toString();
public ArrayList getnewheaders(){
SoapObject请求=新的SoapObject(名称空间、方法名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(请求);
HttpTransportSE HttpTransportSE=新的HttpTransportSE(URL);
httpTransportSe.debug=true;
SoapObject响应=null;
试一试{
调用(SOAP_操作,信封);
Log.i(“呼叫”、“呼叫成功”);
response=(SoapObject)envelope.getResponse();
SoapObject main=(SoapObject)response.getProperty(1);
SoapObject列表=(SoapObject)main.getProperty(0);
字符串a=Integer.toString(list.getPropertyCount());
Log.i(“财产计数”,a);

对于(int i=0;iit给出了异常java.lang.RuntimeException:非法属性:eventID你可以发布图书名称或web服务链接(使用soap)教程。非常感谢uTry更改索引,你应该找到正确的索引。它也可以是eventID的getProperty(1),婚礼地点的getProperty(2)等。
System.out.println("No of Datas are "+response.getPropertyCount()+response);
System.out.println("No of Datas are "+response.getAttributeCount()+response);
androidHttpTransport.call(SOAPACTION, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
SoapObject main = (SoapObject)response.getProperty(0); //your xml style does not inclue envelope details so i guess it will require 0th property to reach table


data.eventID = main.getProperty("eventID").toString();
data.weddinVenue = main.getProperty("weddingVenue").toString();
data.weddinDate = main.getProperty("weddingDate").toString();
data.bridesName = main.getProperty("bridesName").toString();
data.groomsName = main.getProperty("groomsName").toString();
data.passwordAvailable = main.getProperty("passwordAvailable").toString();
data.galleryImage = main.getProperty("galleryImage").toString();
public ArrayList<Haberler> getNewsHeaders(){

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE httpTransportSe = new HttpTransportSE(URL);
        httpTransportSe.debug = true;
        SoapObject response = null;

        try{
            httpTransportSe.call(SOAP_ACTION, envelope);
            Log.i("call", "call successfull");
            response = (SoapObject)envelope.getResponse();
            SoapObject main = (SoapObject)response.getProperty(1);
            SoapObject list = (SoapObject)main.getProperty(0);

            String a = Integer.toString(list.getPropertyCount());
            Log.i("property count", a);

            for(int i = 0; i<list.getPropertyCount(); i++){
                Haberler h = new Haberler();
                SoapObject nsoap = (SoapObject)list.getProperty(i);
                if(nsoap != null){
                    h.set_id(Integer.valueOf(nsoap.getProperty("id").toString()));
                    h.set_header(nsoap.getProperty("baslik").toString());
                    h.set_category(nsoap.getProperty("kategori").toString());
                    h.set_abstract(nsoap.getProperty("ozet").toString());
                    h.set_details(nsoap.getProperty("detay").toString());
                    h.set_begindate(nsoap.getProperty("bas_tarihi").toString());
                    h.set_enddate(nsoap.getProperty("bit_tarihi").toString());
                    haberler.add(h);

                    Log.i("eklenen haber", h.get_header());

                }
            }

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


        return haberler;
    }