首先看下Java编写的webservice:
工具:MyEclipse
步骤:1.菜单栏 –> File –> New –> Web Service Project
2.在这里,我们使用JAX-WS方式。
3.编写代码,然后发布WS(new web service ,myeclipse 工具栏图标),要选择自动生成wsdl文件
4.导入myeclipse自带的两个JAX-WS jar文件
5.部署项目,结束
总结:以上操作可以参考网上文档,代码编写跟编写java代码一样,只是其他一些操作全部用工具生成
android中的代码:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.MarshalBase64;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.ksoap2.transport.AndroidHttpTransport;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity
{
private TextView textView;
private EditText editText;
private Button button;
private static final String serviceURL="http://172.20.0.129:7070/UserMgService/UserMgServicePort";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(TextView)findViewById(R.id.textView);
editText=(EditText)findViewById(R.id.editText);
button=(Button)findViewById(R.id.button);
button.setText("获取服务器端数据");
button.setOnClickListener(new MyButtonListener());
}
class MyButtonListener implements OnClickListener
{
@Override
public void onClick(View v)
{
editText.setText(getRemoteInfo());
textView.setText("服务器端数据:"+getRemoteInfo());
}
}
public String getRemoteInfo() {
String out="11";
// 命名空间
try
{
String nameSpace = "http://service.jcy/";
// 调用的方法名称
String methodName = "getPwd";
String endPoint = "http://172.20.0.129:7070/UserMgService/UserMgServicePort";
// String soapAction = "http://service.jcy/getUserInfo";
// 指定WebService的命名空间和调用的方法名
SoapObject rpc = new SoapObject(nameSpace, methodName);
// 设置需调用WebService接口需要传入的两个参数mobileCode、userId
//rpc.addProperty("mobileCode", phoneSec);
//rpc.addProperty("userId", "");
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
// 设置是否调用的是dotNet开发的WebService
// envelope.dotNet = true;
// 等价于
envelope.bodyOut = rpc;
(new MarshalBase64()).register(envelope);
AndroidHttpTransport transport=new AndroidHttpTransport(serviceURL);
transport.debug=true;
transport.call(nameSpace+methodName, envelope);
if(envelope.getResponse()!=null){
out=envelope.getResponse().toString();
}
} catch (SoapFault e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (XmlPullParserException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return out;
}
}