編輯:Android開發實例
最近需要做一個android的項目調用.net的wcf,第一次做,花了好久,現在總結一下途中的許多問題,供大家參考,避免遇到同樣的問題。
1.首先是遇到的問題是android虛擬機無法上網。
這個問題我弄了一天,不管怎麼調就是不上網,一直瞎調試···後來打開浏覽器發現網頁也打不開,查了一下發現dns配置和自己的電腦的不一樣的原因。
在cmd-adb shell-setprop net.dns1 自己電腦的dns(詳見上一篇轉載)。
當然,這個不能忘了哈
<uses-permission android:name="android.permission.INTERNET" />
2.實際連接的代碼不多說了,網上有的是,我直接上代碼了,這裡面就是.svc和.asmx的區別了,注釋的是.asmx的soaaction是命名空間+方法名,.svc的soapaction是命名空間+契約名(這個我不是很懂,不知道叫法有沒有問題,歡迎指出錯誤)+方法名。其實很早就實現了連接.asmx後綴的,但是就是實現不了連接.svc的
- package com.example.wstest1;
- import java.io.IOException;
- 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.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.widget.TextView;
- public class MainActivity extends Activity {
- private final static String TAG = "MainActivity";
- // 命名空間
- private static final String serviceNameSpace = "http://tempuri.org/";
- // 方法名稱
- private static final String methodName = "ReceviceCommand";
- // 請求URL
- private static final String serviceURL = "http://10.14.4.67:3009/ITHmeApp/ITHomeService.svc";
- //private static final String serviceURL = "http://10.14.4.67:3009/ITHmeApp/ITHomeService.asmx";
- // SoapAction
- private static final String soapAction = "http://tempuri.org/IITHome/ReceviceCommand";
- //private static final String soapAction = "http://tempuri.org/ReceviceCommand";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- TextView t = (TextView) findViewById(R.id.test1);
- String re = getRequestData();
- t.setText(re);
- Log.e(TAG, re);
- }
- /**
- *
- * @return
- * @throws IOException
- * @throws XmlPullParserException
- */
- private String getRequestData() {
- // 實例化SoapObject對象,指定webService的命名空間以及調用方法的名稱
- SoapObject request = new SoapObject(serviceNameSpace, methodName);
- // example方法中有一個String的參數,這裡將“android client”傳遞到example中
- request.addProperty("inputCommand", "oh");
- // 獲得序列化的Envelope
- SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
- SoapEnvelope.VER11);
- envelope.dotNet = true;
- envelope.bodyOut = request;
- // Android傳輸對象
- HttpTransportSE transport = new HttpTransportSE(serviceURL);
- transport.debug = true;
- // 調用WebService
- try {
- transport.call(soapAction, envelope);
- } catch (IOException e) {
- // TODO Auto-generated catch block
- return e.getMessage();
- } catch (XmlPullParserException e) {
- // TODO Auto-generated catch block
- return e.getMessage();
- }
- try {
- if (envelope.getResponse() != null) {
- return envelope.bodyIn.toString();
- }
- } catch (SoapFault e) {
- // TODO Auto-generated catch block
- return e.getMessage();
- }
- return null;
- }
- }
3,這是核心問題了,糾結了好幾天的問題,報錯unterminated entity ref (position:TEXT
這個問題在連接.asmx完全不存在,但是連接.svc就是怎麼也找不到,然後找了一下國外的論壇終於發現,原來,是ksoap2版本的問題,我用的是最新的2.6.5,但是不知是2.6.5一個bug還是其他什麼原因,需要換成2.5.7的,坑爹啊````
相信對於手機的時間日期設置大家一定都不陌生吧,今天舉一個關於時間日期設置的示例,其中有些許不完善之處,例如如何使設置的時間日期和手機系統同步等。感興趣的讀者可以根
ListFragment繼承於Fragment。因此它具有Fragment的特性,能夠作為activity中的一部分,目的也是為了使頁面設計更加靈活。 相比Fra
一 、前言 上次模仿開發者頭條首頁實現了一個版本,給345大神,我的產品經理一看,又被鄙視了一把,說還在用老的技術,於是乎這三天把整個design
學習目的: 1、掌握在Android中如何建立RadioGroup和RadioButton 2、掌握RadioGroup的常用屬性 3、理解RadioButton