android客户端通过xfire访问webservice

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布局文件我这儿就不细说了)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值