Android:如何使用kso​​ap2从服务器Web服务响应中提取一些数据

时间:2012-02-02 13:10:40

标签: android wsdl android-ksoap2

我想学习如何在Android上使用webSservices。 目前,我有一个带有wsdl文件的服务器,我可以从中调用所需的Web服务。

我的问题是我收到了来自服务器的响应,我想提取一些对我来说有关的信息,例如用户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()方法,如果是,怎么用?

谢谢。

1 个答案:

答案 0 :(得分:1)

您应该采取两个步骤:

  1. 获取正确的XML值
  2. 解析XML
  3. 约1 ...
    我更喜欢 HttpTransportSE ,而不是:

    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

    的问候,
    德拉甘