2009-12-19 71 views
0

如何使用WS- *服务连接创建Android应用程序?Android + WS- *服务?

从哪里获得初学者的信息 - 它应该包含视频教程和说明什么类型的绑定不被支持。

回答

2

简单和基本的思路是建立在Web服务URL的连接并发布XML数据到该网址。下面的代码假定Web服务URL是http://www.example.com/example.asmx,你要调用的方法是WebServiceMethod1,它接受一个字符串参数。返回字符串是来自Web Service的响应,您必须解析XML以获取数据。

public static String callWebServiceMethod(String email){ 
HttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost("http://www.example.com/example.asmx"); 
String webServiceXml = ""; 
String response = ""; 

try 
{ 
    webServiceXml += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 
    webServiceXml += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"; 
    webServiceXml += "<soap:Header>"; 
    webServiceXml += "<AuthHeader xmlns=\"http://www.example.com/\">"; 
    webServiceXml += "</AuthHeader>"; 
    webServiceXml += "</soap:Header>"; 
    webServiceXml += "<soap:Body>"; 
    webServiceXml += "<WebServiceMethod1 xmlns=\"http://www.example.com/\">"; 
    webServiceXml += "<emailId>" + email + "</emailId>"; 
    webServiceXml += "</WebServiceMethod1>"; 
    webServiceXml += "</soap:Body>"; 
    webServiceXml += "</soap:Envelope>"; 

    httpPost.setHeader("content-type","text/xml; charset=utf-8"); 
    httpPost.setHeader("SOAPAction","http://www.example.com/WebServiceMethod1"); 

    httpPost.setEntity(new StringEntity(webServiceXml)); 

    HttpResponse httpResponse = httpClient.execute(httpPost); 

    response = EntityUtils.toString(httpResponse.getEntity()); 
} 
catch(Exception ex) 
{ 
    Log.i("error", ex.getMessage()); 
} 

return response; 

}

1

我不相信Android有任何内置的WS- *支持;它具有Java网络,Apache HTTP客户端,JSON和XML解析器,但没有本机WS- *库。

大概你不想在Android上编写自己的WS库。因此,因为Android使用Java语言进行开发,所以应该能够包含用于非移动开发的任何相关库。例如Apache WS库。

0

使用WS- *设计Web服务可能更容易,然后将REST前端暴露给它,并使用简单的java.net.URL和java.net.URLConnection类与您的前端进行通信。