2012-01-30 16 views
5

मेरे पास एक नेट वेबसाइट है जो एक सरल धारावाहिक वस्तु देता है।मैं अपने ऑब्जेक्ट में सोप ऑब्जेक्ट को कैसे डाला या deserialize कर सकते हैं?

मेरे पास .NET webservice से प्रतिक्रिया प्राप्त करने के लिए निम्न कोड है। मैं अपने ऑब्जेक्ट में एक्सएमएल वापस कैसे deserialize कर सकते हैं?

मैं सोपप्रिमेटिव के बजाय MyObject वापस करना चाहता हूं।

private static SoapPrimitive callWebServiceMethod(String url, 
      String namespace, String methodName, 
      HashMap<String, Object> parameters, String soapAction) 
      throws Exception { 

     Log.i("WebService", "URL: " + url); 
     Log.i("WebService", "MethodName: " + methodName); 

     URL myurl = new URL(url); 
     URLConnection connection = myurl.openConnection(); 
     connection.setConnectTimeout(20 * 1000); 
     HttpURLConnection httpConnection = (HttpURLConnection) connection; 
     int responseCode = httpConnection.getResponseCode(); 
     if (responseCode == HttpURLConnection.HTTP_OK) 
     { 
      httpConnection.disconnect(); 
      SoapObject request = new SoapObject(namespace, methodName); 

      if (parameters != null) { 
       String[] keys = new String[0]; 
       keys = (String[]) parameters.keySet().toArray(keys); 
       Object[] vals = (Object[]) parameters.values().toArray(); 

       for (int i = 0; i < parameters.size(); i++) { 
        request.addProperty(keys[i], vals[i]); 
        Log.i("WebService", keys[i] + ": " + vals[i]); 
       } 
      } 

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

      envelope.setOutputSoapObject(request); 
      HttpTransportSE androidHttpTransport = new HttpTransportSE(url, 
        TimeOutInSeconds * 1000); 

      androidHttpTransport.call(soapAction, envelope); 
      return (SoapPrimitive) envelope.getResponse(); 
     } 
     else 
     { 
      httpConnection.disconnect(); 
      throw new Exception(
        "Http Error code: " + String.valueOf(responseCode)); 
     } 

    } 

उत्तर

2

मैं अच्छी तरह से समझ में नहीं आता है, लेकिन मैं आप चाहते हैं कि आपके विधि अपने कस्टम वर्ग के बजाय सोप वस्तु का ऑब्जेक्ट प्रदान लगता है।

तो मैं इस तरह मेरे समान कार्य में किया है कि ..

SoapObject soapObject = (SoapObject) envelope.getResponse(); // SOAP Object 
    realTimeUtil = new RealTimeUtil(); // CUSTOM Object of My Class 
     if(soapObject.hasProperty("diffgram")) 
      soapObject = (SoapObject) soapObject.getProperty("diffgram"); 
       if(soapObject.hasProperty(clientName)){ 
        soapObject = (SoapObject) soapObject.getProperty(clientName); 
         for (int i = 0 ; i<soapObject.getPropertyCount(); i++){ 
           if(soapObject.hasProperty(clientName)){       
           SoapObject soapObject1 = (SoapObject) soapObject.getProperty(i); 
            if(soapObject1.hasProperty("Site")){ 

             String site = soapObject1.getProperty("Site").toString(); 
             String dateTime = soapObject1.getProperty("DateTime").toString(); 
             String clicks =soapObject1.getProperty("Clicks").toString(); 
             String orders = soapObject1.getProperty("Orders").toString(); 
             String reveneue = soapObject1.getProperty("Revenue").toString(); 
             String items = soapObject1.getProperty("Items").toString(); 

             realTimeUtil.setSite(site); 
             realTimeUtil.setClicks(clicks); 
             realTimeUtil.setDateTime(dateTime); 
             realTimeUtil.setOrders(orders); 
             realTimeUtil.setRevenue(reveneue); 
             realTimeUtil.setItem(items); 
                           } 
          } 
         } 
       } 
     return realTimeUtil; 

RealtimeUTil कुछ चर के साथ मेरे एप्लिकेशन में एक कस्टम वर्ग है और यह गेटर-सेटर तरीकों है।

+1

क्या संपत्तियों पर लूप के बजाय प्रतिक्रिया एक्सएमएल deserializing के लिए कोई और तरीका है? – breceivemail

+0

SOAP पार्सिंग के साथ कोई और अनुभव नहीं .. :) – MKJParekh

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^