您的位置:首页 > 移动开发 > Android开发

android客户端通过xfire访问webservice

2014-04-21 12:08 417 查看
package com.example.k09;

import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class K09 extends Activity
{
private List<String> list = new ArrayList<String>();

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_k09);
/**************************************************/
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().detectLeakedClosableObjects()
.penaltyLog().penaltyDeath().build());
/***************************************************/
init();
}
private void init()
{

// TODO Auto-generated method stub
final ListView mList = (ListView) findViewById(R.id.province_list);
// 命名空间
String SERVICE_NS = "http://news_wbs/com/wy/NewsImpl";
String SERVICE_URL = "http://192.168.22.12:8080/news_wbs/services/News";
// 调用的方法名称
String methodName = "getNewsList";
String ACTION="http://news_wbs/com/wy/NewsImpl/getNewsList";
SoapObject rpc = new SoapObject(SERVICE_NS, methodName);
// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER10);

envelope.bodyOut = rpc;
// 设置是否调用的是dotNet开发的WebService
envelope.dotNet = true;

// 等价于envelope.bodyOut = rpc;
envelope.setOutputSoapObject(rpc);
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
try {
// 调用WebService
ht.call(ACTION, envelope);
if(envelope.getResponse()!=null)
{	// 获取返回的数据
SoapObject result = (SoapObject)envelope.bodyIn;
String result1 = result.getProperty(0).toString();
Log.i("King_wang",result1);
SoapObject Newslist = (SoapObject) result.getProperty("out");
for (int i = 0; i <Newslist.getPropertyCount(); i++)
{
list.add(Newslist.getProperty(i).toString());
}
}
}
catch (Exception e) {
e.printStackTrace();
}
mList.setAdapter(new ArrayAdapter<String>(K09.this,
android.R.layout.simple_list_item_1, list));
}
}


最近一直在做webservice方面的项目,但是android客户端的问题一直没解决

网上资料找的都一样,按照书上的例子走也不行

最后改变客户端和服务器的连接方式

并且加上几行处理多线程的代码,问题就解决了

一、连接方式

我是用自己的pc作为服务器(myeclipse),用自己的手机连接服务器(开发用的是adt,将手机通过豌豆荚与pc连接)

让宿舍的一个室友共享下自己的网络

我把pc的宽带断了,连接他的无线网

手机也打开wlan,连接他的无线网

查看pc的无线网ip

在代码里面将服务器的ip改成我的电脑的无线网ip

无限网毕竟不稳定,如果发现出错了,可以看下是不是电脑或者手机的无限网断了

二、代码(导入包,添加net权限,编写xml布局文件我这儿就不细说了)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐