2012-01-07 8 views
6

Androidアプリの開発にとって非常に新しいです。私の新しいAndroidアプリでは、Webサービスからいくつかのデータを表示したい。これは私がSOAP messageを持っていることを意味し、私はSOAP応答からデータを解析する必要があります。 iPhoneのアプリでは、SOAPメッセージの応答を解析することは非常にうまく行っていましたが、アンドロイドではこれを行う方法がわかりません。私はGoogleでたくさんのものを探し、いくつかのアイデアを得ました。しかし、これは非常に混乱しています。誰でもSOAPを要求/応答を受信し、応答(XML format)をSAXParserAndroidで応答を理解するための最も簡単な方法を提案できますか?私はksoap2-android-assembly-2.6.0-jar-with-dependencies.jarを私のプロジェクトにインストールしました。ここでいくつかのサンプルコードを見つけました。AndroidでSOAPリクエストを送信してXML形式のSOAPレスポンスを送信するにはどうすればいいですか?

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

このコードは正しいですか?私の質問にはどんな提案もお願いします。これで私を助けてください。前もって感謝します。

答えて

5


Google for Ksoap2チュートリアルでは、たくさんの情報が得られます。 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(); 
    } 

とXMLのためにplsは、XMLパーサーのためのチュートリアルを確認してくださいSTAXはアンドロイドでサポートされていないとして、唯一のSAXを使用しています。 xmlリクエストを送信するためには、xmlを文字列として送信し、次にサーバー側でデコードすることができます。

+0

お返事ありがとうございます。あなたの考えを私のプロジェクトに取り入れます。私はあなたの助けを将来したい。ありがとう。 – Gopinath

+0

@Gopinathは正しいメッセージを送信するためにプロパティをどのように設定しましたか? – arniotaki

関連する問題