我想使用kSOAP2(v 2.1.2)連接到Android中的.NET WCF服務,但每當我嘗試進行服務調用時都會收到致命異常。我在查找錯誤時遇到了一些困難,並且似乎無法弄清楚爲什麼會發生這種情況。我使用的代碼如下:無法連接到Android上的WCF服務
package org.example.android;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransport;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
public class ValidateUser extends Activity {
private static final String SOAP_ACTION = "http://tempuri.org/mobile/ValidateUser";
private static final String METHOD_NAME = "ValidateUser";
private static final String NAMESPACE = "http://tempuri.org/mobile/";
private static final String URL = "http://192.168.1.2:8002/WebService.Mobile.svc";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.validate_user);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras == null) {
this.finish();
}
String username = extras.getString("username");
String password = extras.getString("password");
Boolean validUser = false;
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo uName = new PropertyInfo();
uName.name = "userName";
PropertyInfo pWord = new PropertyInfo();
pWord.name = "passWord";
request.addProperty(uName, username);
request.addProperty(pWord, password);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransport androidHttpTransport = new HttpTransport(URL);
androidHttpTransport.call(SOAP_ACTION, envelope); // error occurs here
Integer userId = (Integer)envelope.getResponse();
validUser = (userId != 0);
} catch (Exception ex) {
}
}
private void exit() {
this.finish();
}
}
編輯:刪除舊的堆棧跟蹤。總之,第一個問題是由於使用vanilla kSOAP2而不是Android的修改庫(kSOAP2-Android),程序由於缺少方法或庫而無法打開連接。第二個問題是設置問題。在清單中沒添加以下設置:
<uses-permission android:name="android.permission.INTERNET" />
我現在有與我需要弄清楚XMLPullParser的問題。
10月12日至23日:58:06.480: ERROR/SOCKETLOG(210):add_recv_stats 的recv 0
10月12日至23日:58:06.710: WARN/System.err的(210): org.xmlpull.v1.XmlPullParserException: 意外類型(位置:END_DOCUMENT 空@ 1:0在 [email protected])
十月12日至23日:58:06.710: WARN /系統。 err(210):at org.kxml2.i o.KXmlParser.exception(KXmlParser.java:243)
10月12日至23日:58:06.720: WARN/System.err的(210):在 org.kxml2.io.KXmlParser.nextTag(KXmlParser.java :1363)
10月12日至23日:58:06.720: WARN/System.err的(210):在 org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
10月12日至23日:58:06.720: WARN/System.err(210):at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
12-23 10:58:06.720: WARN/System.err的(210):在 org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
12-23 10點58: 06.730: WARN/System.err的(210):在 org.example.android.ValidateUser.onCreate(ValidateUser.java:68)
10月12日至23日:58:06.730: WARN/System.err的( 210):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1122)
12-23 10:58:06.730: WARN/System .ERR(210):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2104)
10月12日至23日:58:06.730: WARN/System.err的(210):在 android.app .ActivityThread.handleLaunchActivity(ActivityThread.java:2157)
10月12日至23日:58:06.730: WARN/System.err的(210):在 android.app.ActivityThread.access $ 1800(ActivityThread。的java:112)
10月12日至23日:58:06.730: WARN/System.err的(210):在 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1581)
12 -23 10:58:06.730: WARN/System.err的(210):在 android.os.Handler.dispatchMessage(Handler.java:88)
10月12日至23日:58:06.730: WARN/System.err(210):at android.os.Looper.loop(Looper.java:123)
12-23 10:58 :06.730: WARN/System.err的(210):在 android.app.ActivityThread.main(ActivityThread.java:3739)
10月12日至23日:58:06.730: WARN/System.err的(210 ):在 java.lang.reflect.Method.invokeNative(母語 方法)
十月12日至23日:58:06.730: WARN/System.err的(210):在 java.lang.reflect.Method中.invoke(Method.java:515)
12-23 10:58:06.730: WARN/System.err(210):at com.android.i nternal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:739)
10月12日至23日:58:06.730: WARN/System.err的(210):在 com.android.internal.os.ZygoteInit 。主要(ZygoteInit.java:497)
10月12日至23日:58:06.730: WARN/System.err的(210):在 dalvik.system.NativeStart.main(母語 方法)
不能確定第一個日誌,但在第二日誌「未知錯誤」是從未處理SOCKERR_在本地代碼。應該有一個logcat條目剛剛開始'未知的套接字錯誤'是什麼行? – 2009-12-23 02:04:43
我編輯了日誌以顯示異常之上的5行。 – illvm 2009-12-23 15:46:46
我能解決未知套接字異常。似乎我忽略了(而且很無知)我必須添加到我的清單文件中的設置。那是: 。現在我有一個XMLPullParserException,我需要弄清楚。 –
illvm
2009-12-23 15:55:06