2012-02-02 27 views
0

AndroidでwebSservicesを使用する方法を学習したいと思います。 現時点では、wsdlファイルのサーバーがあり、希望のWebサービスを呼び出すことができます。Android:サーバーからいくつかのデータを抽出する方法kSOAP2を使用したWebServiceレスポンス

私の問題は、私がサーバーからの応答を得たことです。ユーザーIDなどのような、私には感情的な情報を抽出したいと思います。ここで

が私のコードです:もしそうなら

public class TestBookSoapActivity extends Activity { 

private static final String SOAP_ACTION = "JournalArticles"; 
private static final String METHOD_NAME = "JournalArticles"; 
private static final String NAMESPACE = "http://api.mdpi.com/ws/"; 
private static final String URL = "http://api.mdpi.com/ws/server.php"; 


/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    executeAppelSOAP(); 
} 

private void executeAppelSOAP() { 
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
    request.addProperty("JournalID", 1); 
    request.addProperty("Volume", 12); 
    request.addProperty("Issue", 1); 

    SoapSerializationEnvelope enveloppe = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    enveloppe.setOutputSoapObject(request); 
    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL);    
    try { 
     androidHttpTransport.call(SOAP_ACTION, enveloppe); 
     Object resultat = enveloppe.getResponse(); 
     System.out.println(" Journal Articles= " + resultat.toString()); 
    } catch(Exception e) { 
     e.printStackTrace(); 
     System.out.println("Problem"); 
    } 
} 

は私がenveloppe.parse()メソッドを使用してもらえ、どのように?

ありがとうございます。

+0

質問が正確ではない、あなたがラインオブジェクトresultat = enveloppe.getResponse()で正しくXMLを取得するために管理しています。それとも例外がありますか? –

+0

Hvala Dragane、コードでわかるように、私は行Objectを持っています。それは私のログファイルに表示されるexempleのXMLファイルを取得できますが、問題は、この応答からいくつかの日付をexempleに取得する方法です。 –

+0

さて、String内でXMLを解析するのは面白いです。 http://stackoverflow.com/questions/5752268/android-parse-xml-from-string-problems(最初の答えを確認してください)のように、パフォーマンスの理由からSAXパーサを使用することができます。 inputSource.setCharacterStream(new StringReader(resultat.toString()));を使用してください。 Nema na cemu :-) –

答えて

1

あなたが取るべき二つのステップがあります。

が正しいXML値を取得します
  • 解析用XMLが

    約1 ...
    私は代わりにHttpTransportSEを好みますof:

    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport (URL); 
    

    使用:次に

    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 
    

    の代わり:

    Object resultat = enveloppe.getResponse();  
    

    使用:

    SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
    String xml = response.toString(); 
    

    また、応答がどのように見えるかデバッガで確認することができます。詳細はthis questionへの回答で読むことができます。

    約2 ...
    任意のXMLパーサーを使用できます。パフォーマンス上の理由から私はSAXを好む。ここではAndroidの例である:how to parse XML in Android

    よろしく、
    ドラガン

  • 関連する問題