Android開發,需要連接webservice,之前就想用谷歌提供的jar包,下載地址:http://pan.baidu.com/s/1hqMTUHe 把它下載下來粘貼到libs文件夾下即可: 網上有很多類似的方法,我嘗試了很多都沒有成功,最後發現是我下載的jar包有問題導致我一直卡在哪兒。 首先
Android開發,需要連接webservice,之前就想用谷歌提供的jar包,下載地址:http://pan.baidu.com/s/1hqMTUHe
把它下載下來粘貼到libs文件夾下即可:
網上有很多類似的方法,我嘗試了很多都沒有成功,最後發現是我下載的jar包有問題導致我一直卡在哪兒。
首先添加網路許可權:
<uses-permission android:name="android.permission.INTERNET"/>
這是全部代碼,包括獲取遠程webservice當中數據並用ListView顯示:
package com.example.webservice; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.ksoap2.SoapEnvelope; import org.ksoap2.SoapFault; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity { //命名空間 String nameSpace="http://tempuri.org/"; //調用方法 String methodName="selectStuAll";//webservice存在的方法名稱 String endPoint="http://10.0.2.2:8011/WebService.asmx?wsdl";//本地測試完整的鏈接 String soapAction="http://tempuri.org/selectStuAll";//命名空間和調用方法名 private ListView listview; private ListAdapter adapter; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview=(ListView) findViewById(R.id.listView1); adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,getsource()); listview.setAdapter(adapter); listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO 自動生成的方法存根 Toast.makeText(MainActivity.this, ">>"+adapter.getItem(arg2),1).show(); } }); } public List<String> getsource() { List<String> list=new ArrayList<String>(); //實例化SoapObject對象 SoapObject request=new SoapObject(nameSpace, methodName); //第二步:假設方法有參數的話,設置調用方法參數 /* request.addProperty("username","1"); request.addProperty("password","2"); request.addProperty("tel","3");*/ //獲得序列化的Envelope SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER12); envelope.bodyOut=request; envelope.dotNet=true; HttpTransportSE transport=new HttpTransportSE(endPoint); try { transport.call(soapAction, envelope); } catch (IOException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } catch (XmlPullParserException e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } SoapObject result = null; try { result = (SoapObject)envelope.getResponse(); } catch (SoapFault e) { // TODO 自動生成的 catch 塊 e.printStackTrace(); } int count=result.getPropertyCount(); for(int index=1;index<count;index=index+3){ list.add(result.getProperty(index).toString()); } return list; } }
這樣就大功告成了,如果用到這個方法有問題,在下麵評論,我會幫你解決。