Подключение базы данных mysql с использованием мыльных веб-сервисов в android

Я разрабатываю приложение для Android, которое подключается к базе данных Mysql, которая также использует веб-службы SOAP

Когда я запускаю свое приложение на симуляторе Android, я вижу следующие сообщения. Сообщение: [Ljava.lang.String; @ 44f565fo.

Я хочу понять, почему я получаю это сообщение.

Вот мой код веб-службы Java:

package com.retailer.ws; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.PreparedStatement; public class RetailerWS { public String customerData(){ String customerInfo = ""; try{ Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/retailer","root","chathura"); //Find customer information where the customer ID is maximum PreparedStatement statement = con.prepareStatement("SELECT * FROM customers WHERE C_ID = (SELECT MAX(C_ID) FROM customer)"); ResultSet result = statement.executeQuery(); while(result.next()){ customerInfo = customerInfo + result.getString("name") + "&" + result.getString("C_ID") + "&"+result.getString("address") + "&"+result.getString("email"); // Here "&"s are added to the return string. // This is help to split the string in Android application } } catch(Exception exc){ System.out.println(exc.getMessage()); } return customerInfo; } } 

Вот код для приложения Android

 package com.retailer.client; import android.app.Activity; import android.os.Bundle; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.widget.TextView; public class RetailerActivity extends Activity { private static final String SOAP_ACTION = "http://ws.retailer.com/customerData"; private static final String METHOD_NAME = "customerData"; private static final String NAMESPACE = "http://ws.retailer.com/"; private static final String URL = "http://175.157.234.156:8085/ForBlog/services/RetailerWS?wsdl"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE ht = new HttpTransportSE(URL); try { ht.call(SOAP_ACTION, envelope); SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); SoapPrimitive s = response; String str = s.toString(); String resultArr[] = str.split("&");//Result string will split & store in an array TextView tv = new TextView(this); for(int i = 0; i<resultArr.length;i++){ tv.append(resultArr[i]+"\n\n"); } setContentView(tv); } catch (Exception e) { e.printStackTrace(); } } } 

main.xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> 

Файл манифеста Android также разрешил использование Интернета.

Итак, почему я вижу [Ljava.lang.String; @ 44f565fo dis messages?

Это мое окно logcat:

 05-23 14:15:10.371: D/AndroidRuntime(3876): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 05-23 14:15:10.371: D/AndroidRuntime(3876): CheckJNI is ON 05-23 14:15:10.520: D/AndroidRuntime(3876): --- registering native functions --- 05-23 14:15:11.191: D/dalvikvm(179): GC_EXPLICIT freed 133 objects / 6720 bytes in 52ms 05-23 14:15:11.231: D/PackageParser(71): Scanning package: /data/app/vmdl70326.tmp 05-23 14:15:11.241: W/PackageParser(71): Unknown element under <application>: uses-permission at /data/app/vmdl70326.tmp Binary XML file line #21 05-23 14:15:11.341: I/PackageManager(71): Removing non-system package:com.retailer.client 05-23 14:15:11.341: I/ActivityManager(71): Force stopping package com.retailer.client uid=10040 05-23 14:15:11.361: I/Process(71): Sending signal. PID: 3868 SIG: 9 05-23 14:15:11.381: I/WindowManager(71): WIN DEATH: Window{44fbd530 com.retailer.client/com.retailer.client.RetailerActivity paused=false} 05-23 14:15:11.401: I/UsageStats(71): Unexpected resume of pack.GetImage while already resumed in com.retailer.client 05-23 14:15:11.421: W/InputManagerService(71): Got RemoteException sending setActive(false) notification to pid 3868 uid 10040 05-23 14:15:11.810: D/PackageManager(71): Scanning package com.retailer.client 05-23 14:15:11.810: I/PackageManager(71): Package com.retailer.client codePath changed from /data/app/com.retailer.client-2.apk to /data/app/com.retailer.client-1.apk; Retaining data and using new 05-23 14:15:11.810: I/PackageManager(71): /data/app/com.retailer.client-1.apk changed; unpacking 05-23 14:15:11.820: D/installd(35): DexInv: --- BEGIN '/data/app/com.retailer.client-1.apk' --- 05-23 14:15:12.000: D/dalvikvm(3883): DexOpt: 'Lorg/xmlpull/v1/XmlPullParser;' has an earlier definition; blocking out 05-23 14:15:12.000: D/dalvikvm(3883): DexOpt: 'Lorg/kxml2/io/KXmlParser;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/xmlpull/v1/XmlSerializer;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/kxml2/io/KXmlSerializer;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/kxml2/kdom/Node;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/kxml2/kdom/Document;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/kxml2/kdom/Element;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserException;' has an earlier definition; blocking out 05-23 14:15:12.010: D/dalvikvm(3883): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserFactory;' has an earlier definition; blocking out 05-23 14:15:12.111: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.111: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.111: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.111: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.111: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.111: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.121: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.131: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 05-23 14:15:12.131: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/kxml2/io/KXmlSerializer;' 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParser;': multiple definitions 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/kxml2/io/KXmlParser;': multiple definitions 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlSerializer;': multiple definitions 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/kxml2/io/KXmlSerializer;': multiple definitions 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/kxml2/kdom/Node;': multiple definitions 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/kxml2/kdom/Document;': multiple definitions 05-23 14:15:12.141: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/kxml2/kdom/Element;': multiple definitions 05-23 14:15:12.141: I/dalvikvm(3883): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;' 05-23 14:15:12.161: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserException;': multiple definitions 05-23 14:15:12.161: D/dalvikvm(3883): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserFactory;': multiple definitions 05-23 14:15:12.171: D/dalvikvm(3883): DexOpt: load 53ms, verify 150ms, opt 7ms 05-23 14:15:12.181: D/installd(35): DexInv: --- END '/data/app/com.retailer.client-1.apk' (success) --- 05-23 14:15:12.191: W/PackageManager(71): Code path for pkg : com.retailer.client changing from /data/app/com.retailer.client-2.apk to /data/app/com.retailer.client-1.apk 05-23 14:15:12.191: W/PackageManager(71): Resource path for pkg : com.retailer.client changing from /data/app/com.retailer.client-2.apk to /data/app/com.retailer.client-1.apk 05-23 14:15:12.191: D/PackageManager(71): Activities: com.retailer.client.RetailerActivity 05-23 14:15:12.201: I/ActivityManager(71): Force stopping package com.retailer.client uid=10040 05-23 14:15:12.331: I/installd(35): move /data/dalvik-cache/data@app@com.retailer.client-1.apk@classes.dex -> /data/dalvik-cache/data@app@com.retailer.client-1.apk@classes.dex 05-23 14:15:12.331: D/PackageManager(71): New package installed in /data/app/com.retailer.client-1.apk 05-23 14:15:12.490: I/ActivityManager(71): Force stopping package com.retailer.client uid=10040 05-23 14:15:12.630: D/dalvikvm(71): GC_EXPLICIT freed 7314 objects / 513320 bytes in 113ms 05-23 14:15:12.890: D/dalvikvm(71): GC_EXPLICIT freed 2977 objects / 155072 bytes in 101ms 05-23 14:15:12.890: D/dalvikvm(190): GC_EXPLICIT freed 878 objects / 50848 bytes in 197ms 05-23 14:15:12.950: W/RecognitionManagerService(71): no available voice recognition services found 05-23 14:15:13.081: I/installd(35): unlink /data/dalvik-cache/data@app@com.retailer.client-2.apk@classes.dex 05-23 14:15:13.100: D/AndroidRuntime(3876): Shutting down VM 05-23 14:15:13.100: D/dalvikvm(3876): Debugger has detached; object registry had 1 entries 05-23 14:15:13.131: I/dalvikvm(3876): JNI: AttachCurrentThread (from ???.???) 05-23 14:15:13.131: I/AndroidRuntime(3876): NOTE: attach of thread 'Binder Thread #3' failed 05-23 14:15:13.530: D/AndroidRuntime(3889): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 05-23 14:15:13.530: D/AndroidRuntime(3889): CheckJNI is ON 05-23 14:15:13.670: D/AndroidRuntime(3889): --- registering native functions --- 05-23 14:15:14.271: I/ActivityManager(71): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.retailer.client/.RetailerActivity } 05-23 14:15:14.301: I/ActivityManager(71): Start proc com.retailer.client for activity com.retailer.client/.RetailerActivity: pid=3895 uid=10040 gids={} 05-23 14:15:14.331: D/AndroidRuntime(3889): Shutting down VM 05-23 14:15:14.341: D/dalvikvm(3889): Debugger has detached; object registry had 1 entries 05-23 14:15:14.381: I/dalvikvm(3889): JNI: AttachCurrentThread (from ???.???) 05-23 14:15:14.381: I/AndroidRuntime(3889): NOTE: attach of thread 'Binder Thread #3' failed 05-23 14:15:14.500: D/dalvikvm(33): GC_EXPLICIT freed 259 objects / 10016 bytes in 189ms 05-23 14:15:14.630: D/dalvikvm(33): GC_EXPLICIT freed 17 objects / 712 bytes in 96ms 05-23 14:15:14.840: D/dalvikvm(33): GC_EXPLICIT freed 2 objects / 48 bytes in 214ms 05-23 14:15:15.020: W/System.err(3895): java.net.SocketException: Permission denied 05-23 14:15:15.020: W/System.err(3895): at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocketImpl(Native Method) 05-23 14:15:15.030: W/System.err(3895): at org.apache.harmony.luni.platform.OSNetworkSystem.createStreamSocket(OSNetworkSystem.java:186) 05-23 14:15:15.030: W/System.err(3895): at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:265) 05-23 14:15:15.030: W/System.err(3895): at java.net.Socket.checkClosedAndCreate(Socket.java:873) 05-23 14:15:15.030: W/System.err(3895): at java.net.Socket.connect(Socket.java:1020) 05-23 14:15:15.030: W/System.err(3895): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:62) 05-23 14:15:15.030: W/System.err(3895): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionPool.get(HttpConnectionPool.java:88) 05-23 14:15:15.030: W/System.err(3895): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getHTTPConnection(HttpURLConnectionImpl.java:927) 05-23 14:15:15.030: W/System.err(3895): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:909) 05-23 14:15:15.040: W/System.err(3895): at org.ksoap2.transport.ServiceConnectionSE.connect(ServiceConnectionSE.java:46) 05-23 14:15:15.040: W/System.err(3895): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:68) 05-23 14:15:15.040: W/System.err(3895): at com.retailer.client.RetailerActivity.onCreate(RetailerActivity.java:31) 05-23 14:15:15.040: W/System.err(3895): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 05-23 14:15:15.040: W/System.err(3895): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 05-23 14:15:15.040: W/System.err(3895): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 05-23 14:15:15.040: W/System.err(3895): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 05-23 14:15:15.040: W/System.err(3895): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 05-23 14:15:15.040: W/System.err(3895): at android.os.Handler.dispatchMessage(Handler.java:99) 05-23 14:15:15.040: W/System.err(3895): at android.os.Looper.loop(Looper.java:123) 05-23 14:15:15.040: W/System.err(3895): at android.app.ActivityThread.main(ActivityThread.java:4627) 05-23 14:15:15.050: W/System.err(3895): at java.lang.reflect.Method.invokeNative(Native Method) 05-23 14:15:15.050: W/System.err(3895): at java.lang.reflect.Method.invoke(Method.java:521) 05-23 14:15:15.050: W/System.err(3895): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-23 14:15:15.050: W/System.err(3895): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-23 14:15:15.050: W/System.err(3895): at dalvik.system.NativeStart.main(Native Method) 05-23 14:15:15.241: I/ActivityManager(71): Displayed activity com.retailer.client/.RetailerActivity: 945 ms (total 945 ms) 05-23 14:15:15.421: W/InputManagerService(71): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@44eb2660 (uid=10049 pid=3808) 

Ошибка здесь

 W/System.err(3895): java.net.SocketException: Permission denied 

http://docs.oracle.com/javase/1.4.2/docs/api/java/net/SocketException.html

Чтение через трассировку стека вызовов

 14:15:15.040: W/System.err(3895): at com.retailer.client.RetailerActivity.onCreate(RetailerActivity.java:31 

Что указывает на наличие проблемы с разрешениями при выполнении

 ht.call(SOAP_ACTION, envelope); 

SocketException: разрешение отклонено?

Используйте другой инструмент тестирования веб-сервисов, например SoapUi, чтобы узнать, можно ли установить соединение с этим веб-сервисом с компьютера, на котором запущен ваш эмулятор.

Возможно, вы видите это значение, потому что используете метод TextView.append() .

Если вы проверите документацию для этого класса , вы увидите, что строка преобразуется в Charsequence.class, а затем снова появляется массив символов … То, что вы печатаете, – это просто значение экземпляра массива. Он может просто преобразовать массив в строку с помощью метода .toString() :

 setContentView(tv.toString());