我的有一篇博客上講了如何基于CXF搭建webservice,service層的接口會被部署到tomcat上,這一篇我就講一下如何在安卓中調用這些接口傳遞參數。
主要從事網頁設計、PC網站建設(電腦版網站建設)、wap網站建設(手機版網站建設)、響應式網站開發、程序開發、微網站、小程序設計等,憑借多年來在互聯網的打拼,我們在互聯網網站建設行業積累了豐富的網站制作、網站設計、網絡營銷經驗,集策劃、開發、設計、營銷、管理等多方位專業化運作于一體,具備承接不同規模與類型的建設項目的能力。
1.在lib中放入ksoap2的jar包并導入
2.在xml 配置文件中加入:
<!-- 訪問網絡的權限 --> <uses-permission android:name="android.permission.INTERNET" />
3.接下來就要通過代碼調用借口了
String WSDL_URI = "http://localhost:8080/WebService4/getNewIdPort?wsdl";//wsdl 的uri String namespace = "http://services.he.TSD/";//namespace String methodName = "getNew";//要調用的方法名稱 // 創建HttpTransportSE對象 HttpTransportSE ht = new HttpTransportSE(WSDL_URI); ht.debug = true; // 使用soap1.1協議創建Envelop對象 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// 實例化SoapObject對象 SoapObject object = new SoapObject(namespace, methodName); // 設置參數 object.addProperty("arg0", "hhh"); // 將SoapObject對象設置為SoapSerializationEnvelope對象的傳出SOAP消息 envelope.bodyOut = object;//由于是發送請求,所以是設置bodyOut envelope.dotNet =false; envelope.setOutputSoapObject(object); try{ // 調用webService ht.call(null, envelope); System.out.println("回傳的值 :"+envelope.getResponse()); } catch (Exception e) { e.printStackTrace(); String msg=e.getMessage(); System.out.println(msg); }
4.若webservice接收不到android傳來的值:
(1)參數名不對
(2).net的webservice要將envelope.dotNet =true,否則envelope.dotNet =false
5.由于是部署到tomcat上的,為了同處于一個網段,要手機和電腦連一個wifi。 ipv4查找用window+R,接著cmd,最后ipconfig 即可查到。
6.要關閉windows防火墻
7.當時我還遇到了一個問題,就是當傳遞的信息復雜時,比如傳遞list型的一個自定義的類,會出現問題,當時我是重寫了ListAdapter類,如下所示:
package com.adapter; /** * Created by hexiaolu on 2017/4/13. */ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import com.example.administrator.stock2.R; public class ListAdapter extends BaseAdapter { HashMap item = new HashMap(); private LayoutInflater mInflater; //private List<Map<String, Object>> mData;// 存儲的EditText值 private ArrayList mData=new ArrayList(); //private ArrayList mDate = new ArrayList(); public Map<String, String> editorValue = new HashMap<String, String>();// private TextView spendMoney; public ListAdapter(Context context, ArrayList data,TextView spend) { spendMoney=spend; mData = data; mInflater = LayoutInflater.from(context); init(); } // 初始化 private void init() { editorValue.clear(); } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } private Integer index = -1; @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; // convertView為null的時候初始化convertView。 if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.list_item, null); holder.goodsName = (TextView) convertView .findViewById(R.id.list_item_goodsName); holder.goodsSellPrice = (TextView) convertView .findViewById(R.id.list_item_goodsSellPrice); holder.goodsUnit = (TextView) convertView .findViewById(R.id.list_item_goodsUnit); holder.goodsSellNum = (EditText) convertView .findViewById(R.id.list_item_goodsSellNum); holder.goodsSellNum.setTag(position); /*holder.goodsSellNum.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { index = (Integer) v.getTag(); } return false; } });*/ class MyTextWatcher implements TextWatcher { public MyTextWatcher(ViewHolder holder) { mHolder = holder; } private ViewHolder mHolder; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (s != null && !"".equals(s.toString())) { int position = (Integer) mHolder.goodsSellNum.getTag(); /*mData.get(position).put("goodsSellNum",s.toString());// 當EditText數據發生改變的時候存到data變量中*/ item=(HashMap)mData.get(position); item.put("goodsSellNum",s.toString()); mData.set(position,item); spendMoney.setText(String.valueOf(calculate()));//計算總價格 } } } holder.goodsSellNum.addTextChangedListener(new MyTextWatcher(holder)); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); holder.goodsSellNum.setTag(position); } item=(HashMap)mData.get(position); Object value=item.get("goodsName"); //Object value = mData.get(position).get("list_item_goodsName"); if (value != null) { holder.goodsName.setText((String) value); } item=(HashMap)mData.get(position); value=item.get("goodsSellPrice"); //value = mData.get(position).get("list_item_goodsSellPrice"); if (value != null) { holder.goodsSellPrice.setText(value.toString()); } item=(HashMap)mData.get(position); value=item.get("goodsUnit"); //value = mData.get(position).get("list_item_goodsUnit"); if (value != null) { holder.goodsUnit.setText(value.toString()); } item=(HashMap)mData.get(position); value=item.get("goodsSellNum"); //value = mData.get(position).get("list_item_goodsSellNum"); if (value != null && !"".equals(value)) { holder.goodsSellNum.setText(value.toString()); } holder.goodsSellNum.clearFocus(); if (index != -1 && index == position) { holder.goodsSellNum.requestFocus(); } return convertView; } public final class ViewHolder { public TextView goodsName; public TextView goodsSellPrice; public EditText goodsSellNum;// ListView中的輸入 public TextView goodsUnit;// 用來定義的標志性主鍵,可不用關心 } public float calculate() { float money = 0; for (int i = 0; i < mData.size(); i++) { HashMap item = new HashMap(); item = (HashMap) mData.get(i); float num = Float.parseFloat(item.get("goodsSellNum").toString()); float price = Float.parseFloat(item.get("goodsSellPrice").toString()); money = money + num * price; } return money; } }
8.調如何用ListAdapter類
ListAdapter adapter = new ListAdapter(this, list,spendMoney); lv_goodsList.setAdapter(adapter);
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。
標題名稱:android調用webservice接口獲取信息
標題路徑:http://newbst.com/article44/jheehe.html
成都網站建設公司_創新互聯,為您提供標簽優化、靜態網站、建站公司、網站設計公司、營銷型網站建設、電子商務
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯