2012-01-07 18 views
6

Rất mới để phát triển ứng dụng Android. Trong ứng dụng Android mới của tôi, tôi muốn hiển thị một số dữ liệu từ webservice. Điều này có nghĩa là tôi có một số SOAP message, tôi cần phải phân tích dữ liệu từ phản hồi SOAP. Trong ứng dụng iPhone tôi biết rất rõ để phân tích cú pháp phản hồi SOAP nhưng, trong android tôi không biết cách làm điều này? Tôi đã tìm kiếm rất nhiều trong Google và nhận một số ý tưởng. Nhưng, rất khó hiểu về điều này. Bất cứ ai có thể vui lòng đề nghị bất kỳ cách dễ nhất để hiểu SOAP gửi yêu cầu/nhận phản hồi và phân tích cú pháp (XML format) phản hồi trong SAXParser trong Android? Tôi đã cài đặt ksoap2-android-assembly-2.6.0-jar-with-dependencies.jar trong dự án của mình. Ở đây tôi tìm thấy một số mã mẫu, tôi đăng ở đây,Làm thế nào để gửi yêu cầu SOAP và phản hồi SOE Parse ở định dạng XML trong Android?

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); 
   } 
} 

Đây có phải là mã chính xác không. Vui lòng đưa ra bất kỳ đề xuất nào về câu hỏi của tôi. Xin hãy giúp tôi về điều này. Cảm ơn trước.

Trả lời

5


Hướng dẫn của Google cho Ksoap2 bạn sẽ nhận được rất nhiều. Đây là mã mẫu để gửi yêu cầu đến dịch vụ web.

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(); 
    } 

Và đối với xml pls kiểm tra hướng dẫn cho trình phân tích cú pháp xml, chỉ sử dụng SAX, vì STAX không được hỗ trợ trong Android. Để gửi yêu cầu xml u có thể gửi xml như chuỗi và sau đó giải mã trên mặt cắt.

+0

Cảm ơn rất nhiều về phản hồi của bạn. Tôi sẽ kết hợp suy nghĩ của bạn trong dự án của tôi. Tôi muốn sự giúp đỡ của bạn trong tương lai. Cảm ơn. – Gopinath

+0

Bạn đã đặt thuộc tính @Gopinath như thế nào để gửi đúng thông điệp? – arniotaki