編輯:關於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的,坑爹啊````
[Android] Activity間切換,傳遞數據,androidactivity前面照著android系統的裁剪圖片的功能自己寫了一個相似的工具。功能是大體上實現了,
Android 異步Http框架簡介和實現原理,android框架在前幾篇文章中《Android 采用get方式提交數據到服務器》《Android 采用post方式提交數
Android源碼中內置包含so文件的APK文件,androidapk 方法一: 1 include $(CLEAR_VARS) 2 #
【Android】常見問題解答,android這裡匯總了用C#和VS2015開發Android App時一些常見的最基本的問題及解決辦法,以後有新的問題時都在這裡一並回答