我的應用程序可能在Android 2. *中運行,沒有任何問題,並且可以正確使用KSoap
模塊。但在安卓4.0或以上安裝應用程序後,我得到這個錯誤:Android在Android 4或更高版本中出現錯誤Ksoap
627-627/ir.tsms E/AndroidRuntime﹕ FATAL EXCEPTION: main
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
at java.net.InetAddress.getAllByName(InetAddress.java:220)
at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
at libcore.net.http.HttpEngine.connect(HttpEngine.java:303)
at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:46)
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:68)
at ir.tsms.wsdl.WSDLHelper.call(WSDLHelper.java:34)
at ir.tsms.wsdl.TSMS.checkUserAuth(TSMS.java:64)
我WSDLHEPLER
是:
public class WSDLHelper {
public static String call(SoapObject request) throws TException {
String result;
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
AndroidHttpTransport transport = new AndroidHttpTransport(Strings.URL_TSMS);
transport.debug = true;
try {
/* GETTING ERROR IN BELOW LINE */
transport.call(Strings.URL_TSMS + request.getName(), envelope);
result = envelope.getResponse().toString();
} catch (IOException ex) {
Log.e("" , ex.getMessage());
throw new TException(PublicErrorList.NOT_EXIST_ERROR_DETAIL);
} catch (XmlPullParserException ex) {
Log.e("" , ex.getMessage());
throw new TException(PublicErrorList.NOT_EXIST_ERROR_DETAIL);
}
if (result.equals(String.valueOf(Integers.CODE_USER_PASS_FALSE)))
throw new TException(PublicErrorList.USERNAME_PASSWORD_ERROR);
return result;
}
public static String convert1(String str) {
return str.substring(1, str.length() - 1);
}
public static String[] convert2(String str) {
return str.split(", ");
}
public static String[] convert3(String str) {
return str.split(",");
}
}
在android系統2.2,3,3測試後*不是問題。我不知道爲什麼這個模塊無法運行在Android 4.請幫助我。感謝
我Ksoap
是:
ksoap2-android-assembly-2.4-jar-with-dependencies.jar
喜。我沒有任何關於app.or的聯網或任何動作sush作爲'Thread'我只能檢查網絡訪問互聯網。你究竟意味着什麼?在'Thread'上移動'ksoap'? – 2014-09-07 04:37:44
@MahdiPishguy:您正在使用Ksoap webservice並向服務器發出請求,因此您是Networking。你應該在另一個線程上或使用AsyncTask來做到這一點。 – 2014-09-07 05:03:50
你能幫我介紹如何使用AsyncTask?我的主要要求是在帖子上貼上'Ksoap'。謝謝 – 2014-09-07 05:49:37