2012-01-07 9 views
6

Android uygulamaları geliştirmede çok yeni. Yeni Android uygulamasında webservice'den bazı verileri göstermek istiyorum. Bu benim SOAP message'um var demektir, verileri SOAP yanıtından ayrıştırmam gerekiyor. IPhone uygulamasında SOAP mesaj cevabını ayrıştırmak için çok iyi biliyordum ama androidde bunu nasıl yapacağımı bilmiyorum. Google'da çok fazla arama yaptım ve bazı fikirler aldım. Ancak, bu konuda çok kafa karıştırıcıyım. Herkes SOAP göndermek isteği/yanıt almak ve Android içinde (XML format) cevabı anlamak için herhangi bir kolay yolu önerebilir misiniz? Projemde ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar'u yükledim. İşte ben Android'de XML biçiminde SOAP isteği ve ayrıştırma SOAP yanıtı nasıl gönderilir?

import java.io.*; 
import org.ksoap2.SoapEnvelope; 
import org.kxml2.io.KXmlParser; 
import org.xmlpull.v1.XmlPullParserException; 


public class ParsingSteps 
{ 
    public static void main(String[] args) 
    { 
     try{ 
      // String msg="<hello>World!</hello>"; 
       String msg = "<SOAP-ENV:Envelope " + "xmlns:SOAP-ENV=\"http:// 
www.w3.org/2001/12/soap-envelope\" " + "xmlns:xsi=\"http://www.w3.org/ 
2001/XMLSchema-instance <http://www.w3.org/%0A2001/XMLSchema-instance>\"" 
+"xmlns:xsd=\"http://www.w3.org/2001/ 
XMLSchema\"& gt;" + 
        "<SOAP-ENV:Body>" + 
        "<result>" + 
        "<message xsi:type=\"xsd:string\">Hello World</message>" + 
        "</result>" + 
        "</SOAP-ENV:Body>" + 
        "</SOAP-ENV:Envelope>"; 

     //  byte[] in= msg.getBytes(); 

       KXmlParser parser=new KXmlParser(); 
       parser.setInput(new StringReader(msg)); 
      SoapEnvelope soapenvelope= new SoapEnvelope 
(SoapEnvelope.VER12); 
       //soapenvelope.parse(parser); 
       soapenvelope.parseBody(parser); 

         } 
       catch (IOException e) { 
              System.out.println("Error reading URI: " + e.getMessage()); 
     } catch (XmlPullParserException e) { 
             System.out.println("Error in parsing: " + e.getMessage()); 
       } 
     //  String result=parser.getName(); 
       //System.out.println(result); 
   } 
} 

bu doğru kod mi, burada yazılan bazı örnek kodlar buldum. Lütfen soruma dair herhangi bir öneri verin. Lütfen bana yardımcı ol. Şimdiden teşekkürler.

cevap

5


Ksoap2 için Google öğretici bir çok onlardan alacaktır. İşte web servisine istek göndermek için örnek kod. STAX android desteklenmez olarak

public class WebServicePoc extends Activity{ 
private static final String SOAP_ACTION = "http://tempuri.org/Arnoid"; 
private static final String METHOD_NAME = "Arnoid"; 
private static final String NAMESPACE = "http://tempuri.org/"; 
private static final String URL = "http://ipaddress:port/UserAuthenticationInterfacer.asmx"; 
EditText editText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    HashMap<String, String> a=new HashMap<String, String>(); 
    try { 

     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     request.addProperty("FOSID", "1994"); 
     request.addProperty("IMEINumber", ""); 
     request.addProperty("SIMCardNo", ""); 
     request.addProperty("ApplicationName", "App"); 
     request.addProperty("CurrentVersion", "1.0.0.0"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet=true; 
     envelope.setOutputSoapObject(request); 
     AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL); 
     androidHttpTransport.call(SOAP_ACTION, envelope); 
     SoapObject result = (SoapObject)envelope.getResponse(); 
     editText=(EditText)findViewById(R.id.text1); 
     editText.setText(result.toString()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

Ve xml ayrıştırıcıları için xml lütfen onay öğretici, kullanım SAX yalnızca

. Xml isteği göndermek için xml'yi string olarak gönderebilir ve sonra da cisim tarafında şifresini çözebilirsiniz.

+0

Cevabınız için çok teşekkürler. Düşüncemi projeme dahil edeceğim. Gelecekte yardımını istiyorum. Teşekkürler. – Gopinath

+0

@Gopinath, doğru mesajı göndermek için mülkü nasıl ayarladınız? – arniotaki