如何使用C#创建web服务并在Android上解析SOAP消息?
尽管Ksoap2是在Android应用程序开发中处理SOAP消息的一个很好的库,但它并没有很好的文档记录。我读了很多博客文章和问答,但信息往往不完整。是否可以提供以下方面的完整示例:如何使用C#创建web服务并在Android上解析SOAP消息?,c#,android,web-services,soap,ksoap2,C#,Android,Web Services,Soap,Ksoap2,尽管Ksoap2是在Android应用程序开发中处理SOAP消息的一个很好的库,但它并没有很好的文档记录。我读了很多博客文章和问答,但信息往往不完整。是否可以提供以下方面的完整示例: 如何使用C#创建简单的web服务 如何在Android上使用此web服务上的webmethod并解析返回的SOAP消息以生成ListView 您可以很容易地找到如何在google上创建简单的web服务 我想向您展示如何从.net web服务获取数据: 首先,您必须使用ksoap2库在android中获取数据 下载并
您可以很容易地找到如何在google上创建简单的web服务 我想向您展示如何从.net web服务获取数据: 首先,您必须使用ksoap2库在android中获取数据 下载并复制到project>libs文件夹中 其次,您必须使用asynctask调用web服务,因为在android中,您必须使用asynctask进行长时间的处理 若您下载ksoap2库并将其复制到项目中,那个么让我们开始吧
//import ksoap2
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
public class Example extends Activity {
//define your web service namespace
private static final String NAMESPACE = "http://tempuri.org/";
//web service URL
private static final String URL = "http://www.example.com/webservice1.asmx";
//variables
private String username;
private String password;
private String userID;
public class ExampleAS extends AsyncTask<String,String,String>{
private ProgressDialog dialog = new ProgressDialog(Example.this);
String ParamUserName;
String ParamPassword;
public ExampleAS(String ParamUserName,String ParamPassword){
this.ParamUserName=ParamUserName;
this.ParamPassword=ParamPassword;
}
@Override
protected void onPreExecute() {
dialog.setMessage("Loading...");
dialog.show();
}
@Override
protected String doInBackground(String... params) {
ExampleFunc(ParamUserName,ParamPassword);
return userID;
}
protected void onPostExecute(String userID){
label.setText(userID);
dialog.dismiss();
}
}
private String ExampleFunc(String ParamUserName,String ParamPassword){
PropertyInfo uName = new PropertyInfo();
uName.name= "USERNAME"; //It must be same with your webservice's parameter name
uName.setValue(ParamUserName); //Parameter value
uName.type = PropertyInfo.STRING_CLASS; //Parameter type
PropertyInfo pass = new PropertyInfo();
pass.name= "PASSWORD"; //It must be same with your webservice's parameter name
pass.setValue(ParamPassword); //Parameter value
pass.type = PropertyInfo.STRING_CLASS; //Parameter type
SoapObject request = new SoapObject(NAMESPACE, "Login"); //Namespace,Webservice method name
request.addProperty(uName);
request.addProperty(pass);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut=request;
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call("http://tempuri.org/Login", envelope);
SoapObject response = (SoapObject) envelope.getResponse();
Object property = response.getProperty(0);
if(property instanceof SoapObject){
SoapObject users = (SoapObject) property;
userID = users.getProperty("user_id").toString();
}
}
catch (Exception e) {
e.printStackTrace();
}
return userID;
}
最后,您应该关注我的另一篇文章:有比创建旧的web服务更简单的事情。为什么不看看Web.API或WCF呢?它们很容易使用,安装,配置等。我受生产基础设施的限制,这不是很新的。
new ExampleAS("admin","1234").execute();