我想学习如何在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()方法,如果是,怎么用?
谢谢。
答案 0 :(得分:1)
您应该采取两个步骤:
约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
的问候,
德拉甘