一个简单的用户登录,调用webservice接口activity里面:public void login(){
final String uname=et_username.getText().toString().trim();
final String upwd=et_userpwd.getText().toString().trim();
if("".equals(uname)||uname==null ){
Utils.showToast(LoginActivity.this, "用户名不能为空!");
}else if("".equals(upwd)||upwd==null){
Utils.showToast(LoginActivity.this, "密码不能为空!");
}else{
//显示进度条
Utils.showProgress(LoginActivity.this, R.string.please_wait, R.string.connect_server);
//登录
Thread thread=new Thread(new Runnable() {
public void run() {
Looper.prepare();
try {
MemberService ms=new MemberService(LoginActivity.this);
Member member=ms.login(uname, upwd);
if(member.isSuccess()){
Utils.dismissProgressDialog();
Utils.showToast(LoginActivity.this, "登录成功!");
//传递数据
Bundle bundle =new Bundle();
bundle.putString("UCode", member.getUserName());
Utils.startActivity(LoginActivity.this, IndexActivity.class, bundle);//跳转到indexActivity
// 到indexActivity获取数据 Bundle b=getIntent().getExtras();
// String ucode=b.getString("UCode");
}else{
Utils.dismissProgressDialog();
Utils.showToast(LoginActivity.this,"登录失败!");
}
} catch (Exception e) {
Log.e("LoginActivity", e.getMessage(),e);
Utils.dismissProgressDialog();
}
Looper.loop();
}
});
thread.start();
}
}
service里面调用接口 public Member login(String userName,String userPwd){
Member member=new Member() ;
try {
String result="";
String nameSpace="http://tempuri.org/";//命名空间
String methodName="Login";//调用的方法名称
String url=Global.address;//webservice的wdsl文档的URL
String soapAction=nameSpace+methodName;
SoapObject request=new SoapObject(nameSpace,methodName);
request.addProperty("UCode",userName);
request.addProperty("UPassword", userPwd);
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);//设置SOAP版本号
envelope.dotNet=true;
envelope.bodyOut=request;
HttpTransportSE ht=new HttpTransportSE(url);
ht.call(soapAction, envelope);
ht.debug=true;
if(envelope.getResponse()!=null){ SoapPrimitive response=(SoapPrimitive)envelope.getResponse();
result=response.toString();
System.out.println("result=========="+result);
JSONArray json=new JSONArray(result);
JSONObject object=json.getJSONObject(0);
member.setMessage(object.getString("msg"));
member.setRole(object.getString("role"));
member.setStatus(object.getInt("status"));
}
} catch (Exception e) {
e.printStackTrace();
}
return member;
}
调试到if(envelope.getResponse()!=null)就没了,envelope.getResponse()是null?????????
大神,帮帮小妹,webservice没搞过,Android也是刚学了一个星期、
final String uname=et_username.getText().toString().trim();
final String upwd=et_userpwd.getText().toString().trim();
if("".equals(uname)||uname==null ){
Utils.showToast(LoginActivity.this, "用户名不能为空!");
}else if("".equals(upwd)||upwd==null){
Utils.showToast(LoginActivity.this, "密码不能为空!");
}else{
//显示进度条
Utils.showProgress(LoginActivity.this, R.string.please_wait, R.string.connect_server);
//登录
Thread thread=new Thread(new Runnable() {
public void run() {
Looper.prepare();
try {
MemberService ms=new MemberService(LoginActivity.this);
Member member=ms.login(uname, upwd);
if(member.isSuccess()){
Utils.dismissProgressDialog();
Utils.showToast(LoginActivity.this, "登录成功!");
//传递数据
Bundle bundle =new Bundle();
bundle.putString("UCode", member.getUserName());
Utils.startActivity(LoginActivity.this, IndexActivity.class, bundle);//跳转到indexActivity
// 到indexActivity获取数据 Bundle b=getIntent().getExtras();
// String ucode=b.getString("UCode");
}else{
Utils.dismissProgressDialog();
Utils.showToast(LoginActivity.this,"登录失败!");
}
} catch (Exception e) {
Log.e("LoginActivity", e.getMessage(),e);
Utils.dismissProgressDialog();
}
Looper.loop();
}
});
thread.start();
}
}
service里面调用接口 public Member login(String userName,String userPwd){
Member member=new Member() ;
try {
String result="";
String nameSpace="http://tempuri.org/";//命名空间
String methodName="Login";//调用的方法名称
String url=Global.address;//webservice的wdsl文档的URL
String soapAction=nameSpace+methodName;
SoapObject request=new SoapObject(nameSpace,methodName);
request.addProperty("UCode",userName);
request.addProperty("UPassword", userPwd);
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);//设置SOAP版本号
envelope.dotNet=true;
envelope.bodyOut=request;
HttpTransportSE ht=new HttpTransportSE(url);
ht.call(soapAction, envelope);
ht.debug=true;
if(envelope.getResponse()!=null){ SoapPrimitive response=(SoapPrimitive)envelope.getResponse();
result=response.toString();
System.out.println("result=========="+result);
JSONArray json=new JSONArray(result);
JSONObject object=json.getJSONObject(0);
member.setMessage(object.getString("msg"));
member.setRole(object.getString("role"));
member.setStatus(object.getInt("status"));
}
} catch (Exception e) {
e.printStackTrace();
}
return member;
}
调试到if(envelope.getResponse()!=null)就没了,envelope.getResponse()是null?????????
大神,帮帮小妹,webservice没搞过,Android也是刚学了一个星期、
解决方案 »
- 移动专家入驻CSDN问答频道,欢迎大家积极踊跃提问
- 看一下这段代码,我想用拖动这个圆,可以移动的位置一直不对,求解
- ???android程序,程序的功能就是:将mdb(用microsoft access打开是一张表格)文件中一部分的字段显示出来
- 毕设要做一个电子书软件
- 各位大虾小弟弱弱的问一下如何才能获取listview中的view呢?
- 我在DIALOG中用自己的VIEW,但是怎么去监听里面的自己的button?
- 请高手赐教关于SD卡问题
- Android开发用到的ichartJs库,怎么让曲线图上显示数据
- 使用百度地图时出现的问题
- QQ微信等能识别是否常登录设备,请问这个是记录手机哪个信息分析的?
- 有关Android 的MapView 的使用,求解
- anropid 新闻客户端程序 是不是要对应一个服务器程序?
PS:美女,一个星期就上手了,不错啊
找到
e.printStackTrace();
这一行在这行后面加上
Log.i("test", "出错:" + e.getMessage());
然后看一下LogCat里面是否有出错提示信息。
艾,你懂的真多,我确实是不会搞呀,看到网上人家那么写我就那么写,呵呵。工作经验少,十一前很不好找工作,我是没得办法才来搞Android的、 在上海、、、有好机会我还是想搞web
public class TestWebService extends Activity {
private static String NameSpace="http://tempuri.org/";//这个不要改
private static String u="http://10.8.8.70:808";//请更换成你要访问的服务器地址
private static String webService="/webService/WebService.asmx";//webService目录
private static String MethodName="HelloWorld2";//要调用的webService方法
private static String soapAction=NameSpace+MethodName;
private static String url=u+webService;//最终要访问的网址
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
tv.setText(ws());
} //webService操作要访问网络,所以最好是使用线程来做,这里只是示例,所以就不考虑了
private String ws(){
String result="";
try{
SoapObject request=new SoapObject(NameSpace,MethodName);//NameSpace
//webService方法中的参数,这个根据你的webservice来,可以没有。
//请注意,参数名称和参数类型,客户端和服务端一定要一致,否则将可能获取不到你想要的值
//request.addProperty("x",5);
//request.addProperty("y", 6);
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;//访问.NET的webservice
envelope.setOutputSoapObject(request);
HttpTransportSE ht=new HttpTransportSE(url);
ht.call(soapAction, envelope);//调用call方法,访问webservice
if(envelope.getResponse()!=null){
SoapPrimitive response=(SoapPrimitive)envelope.getResponse();
//如果要返回对象集合,在服务端可以将对象或集合序列化成json字符串返回,这边再反序列化成对象或集合
result=response.toString();//这里获得了webService的返回值
}
}catch(Exception e){
result=e.getMessage();
}
return result;
}
}上海J2EE一般都是外包,我也在上海,搞.NET,7月的时候想找个全职Android找不到。备受打击下还是找了个.NET的工作。
android的小项目一般还是容易搞定的,无非就是用listview或GridView展示一下数据,通过webservice和服务器进行一下交互,最多再上传或者下载一下文件。呵呵~
我感觉我写的跟你的一样,没什么问题,可能服务器端那边结构有问题吧。哎,我不想搞Android、
1.如果可以调用就是服务端那边的login方法有问题(必须保证android这边的参数传递没有问题,名称,类型,传递顺序)
2.如果连这个简单方法都不能调用就是android 端的问题.如果服务端是.NET做的就好办了,打个断点,然后在vs上调试->附加到进程->w3wp.exe->附加 然后你只要在android上调用login方法,就会进入断点。这样你就可以调试该方法了。搞android比较麻烦。有时候还会有内存泄漏等问题,毕竟可以算是嵌入式开发嘛,呵呵~
美女,看看上面的方法对你有用不?