Also jetzt daheim im eigenen Netzwerk funktioniert plötzlich wieder. Ich habs auch schon mit mobilen Daten probiert, da kommt auch der grpc Fehler. So sehr es mich auch freut, dass es wieder geht, aber so kann ich die App ja schlecht veröffentlichen Hat wirklich keiner eine Ahnung?
Beiträge von Osek
-
-
Hallo,
ich versuche in einer Mapview mitdie Orte einer Nutzereingabe herauszufinden. Gehalten hab ich mich an dieses Tutorial:
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Bisher hat immer alles funktioniert, jetzt versuch ich vor ein paar Tagen weiterzumachen und ganz plötzlich dieser Fehler:
Code
Alles anzeigenW/System.err: java.io.IOException: grpc failed W/System.err: at android.location.Geocoder.getFromLocationName(Geocoder.java:178) at net.osek.bikerfreunde.ui.openRideout.fragments.OpenRideoutRouteFragment.geolocate(OpenRideoutRouteFragment.java:114) at net.osek.bikerfreunde.ui.openRideout.fragments.OpenRideoutRouteFragment.access$000(OpenRideoutRouteFragment.java:47) at net.osek.bikerfreunde.ui.openRideout.fragments.OpenRideoutRouteFragment$1.onEditorAction(OpenRideoutRouteFragment.java:86) at android.widget.TextView.doKeyDown(TextView.java:7226) W/System.err: at android.widget.TextView.onKeyDown(TextView.java:7095) at android.view.KeyEvent.dispatch(KeyEvent.java:2691) at android.view.View.dispatchKeyEvent(View.java:11713) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1834) I/chatty: uid=10083(net.osek.bikerfreunde) identical 1 line W/System.err: at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1834) at androidx.viewpager.widget.ViewPager.dispatchKeyEvent(ViewPager.java:2744) at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1834) I/chatty: uid=10083(net.osek.bikerfreunde) identical 4 lines W/System.err: at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1834) at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:440) at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1819) at androidx.core.view.KeyEventDispatcher.activitySuperDispatchKeyEventPre28(KeyEventDispatcher.java:130) at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:87) at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:133) W/System.err: at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:558) at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59) at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:2814) at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:354) at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4733) W/System.err: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4605) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4293) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4350) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4174) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4147) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4200) W/System.err: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4166) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4326) at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:4487) at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2435) at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1998) at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1989) at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2412) at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:142) W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Hier noch die geolocate Methode:
Code
Alles anzeigenprivate void geolocate () { String searchString = tv_search_bar.getText().toString(); List<Address> addressList = new ArrayList<>(); Geocoder geocoder = new Geocoder(getActivity()); try { addressList = geocoder.getFromLocationName(searchString, 1); } catch (IOException e) { e.printStackTrace(); } if (addressList.size() > 0) { Address address = addressList.get(0); moveCamera(new LatLng(address.getLatitude(), address.getLongitude()), DEFAULT_ZOOM); } }
Und falls es hilft: Die build.gradle
Code
Alles anzeigenapply plugin: 'com.android.application' android { compileSdkVersion 28 buildToolsVersion "29.0.2" defaultConfig { applicationId "net.osek.bikerfreunde" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.navigation:navigation-fragment:2.1.0' implementation 'androidx.navigation:navigation-ui:2.1.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test:runner:1.2.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation files('libs/SimpleServerClient_lib_2.4.1.jar') implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-location:17.0.0' implementation 'com.android.support:multidex:1.0.3' }
Ich hab schon versucht, das ganze auf nem eigenen Thread laufen zu lassen, hab Android Studio mehrmals geschlossen etc. Weiß vielleicht jemand wie ich diesen Fehler beheben kann?
Das ganze läuft weder am Emulator noch am echten Handy. Ich nutze Android 8.1. Wenn ihr mehr Code braucht, Manifest oder so, sagt es einfach, ich will hier jetzt nicht alles zuspamen
Was vielleicht noch hilfreich ist, aber auch Zufall sein könnte: Der Fehler tritt auf, seit ich in nem anderen Netzwerk bin. Vielleicht ne Firewall oder so? Aber selbst wenns dann in meinem eigenen Netzwerk wieder geht brauch ich ja trotzdem ne Lösung dafür...Danke für jede Hilfe!
Osek -
Ähhm okay
Das hat gelöst Ich dachte zwar dass ich das schonmal probiert hätte, aber naja. Das mit der Rückgabe funktioniert auch alles einwandfrei jetzt, ich werd auf jeden Fall auch nochmal die einfache Methode probieren, aber die andere funktioniert jetzt auch ganz in Ordnung für mich, danke für deine Geduld und Hilfe jogimuc
-
Ja, ich hatte es auch schon so wie es im Beispiel stand, hat nichts geändert, ich dachte so könnte es funktionieren, stand zumindest irgendwo..
-
Tut mir leid, ich probier seit Wochen einfach nur noch verschiedenste Sachen aus, daher sieht der Code so durcheinander aus. Das aus deinem Link hab ich ausprobiert.
Der String der da kommt stimmt.
Die Permission im Manifest hab ich gesetzt:
Code
Alles anzeigen<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mysqltest.osek.mysqltest"> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Muss ich sonst noch was machen? Was genau meinst du mit "und zur Laufzeit"?
-
Naja, OkHttp ist zwar für mich deutlich übersichtlicher und gefällt mir auch direkt besser (danke dafür) aber mein Problem löst es nicht, erstmal hier mein Code:
Code
Alles anzeigen@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView textView = findViewById(R.id.textView); OkHttpClient okHttpClient = new OkHttpClient.Builder() .connectionSpecs(Arrays.asList( ConnectionSpec.MODERN_TLS, ConnectionSpec.CLEARTEXT, ConnectionSpec.COMPATIBLE_TLS)) .build(); String url = "http://***.*.***.***/reader.php"; Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()) { final String myResponse = response.body().string(); MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { textView.setText(myResponse); } }); } } }); }
So, wenn ich auf die ip über den Browser gehe funktioniert alles, die App spuckt mir allerdings wieder folgenden Warn aus:
Code
Alles anzeigen07-27 11:31:36.478 16925-16945/com.mysqltest.osek.mysqltest W/System.err: java.net.UnknownServiceException: CLEARTEXT communication to ***.*.***.*** not permitted by network security policy at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:146) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) 07-27 11:31:36.479 16925-16945/com.mysqltest.osek.mysqltest W/System.err: at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 07-27 11:31:36.484 16925-16945/com.mysqltest.osek.mysqltest W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) 07-27 11:31:36.485 16925-16945/com.mysqltest.osek.mysqltest W/System.err: at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200) at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) 07-27 11:31:36.503 16925-16946/com.mysqltest.osek.mysqltest W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
Wieder der Cleartextscheiß ._.
Ich hab schon z.B. mit "https://google.com/" probiert, da ging einwandfrei... bei "http://google.com/" bekomm ich den gleichen Fehler, aber wenn ich meine Website auf https umstelle hab ich ja wieder das, dass der mein Zertifikat nicht akzeptiert und ich will mir garantiert keins kaufen nur um Daten aus ner Datenbank abzurufen...
Ich bin ja jetzt nicht gerade der Androidprofi, aber es kann doch nicht so schwer sein paar Daten aus ner Datenbank lesen/schreiben zu können, v.a. das klappt ja im Prinzip alles, nur sobald ich das dann in ne App packen will macht mir Android Probleme, kann ich den Cleartexttraffic nicht irgendwie erlauben? -
Ich mach meine Aufrufe mit Http(s)URLConnection...
Also mit HttpURLConnection kannst du Seiten auslesen ohne SSL Zertifikat.https://medium.com/@lewisjkl/a…ask-tutorial-7ce5bf0245cd
Ich glaube ich habe das nach diesem Tutorial gemacht.Vielleicht hilft dir das weiter
Hmmm ne, also im Prinzip ist das das gleiche was ich jetzt mach, hier mal mein Code:
Java
Alles anzeigenimport android.os.AsyncTask; import android.widget.TextView; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; public class ActivityDataSource extends AsyncTask<String, Void, String> { public static final String AUTHKEY = "test321"; public static final String POST_PARAM_KEYVALUE_SEPARATOR = "="; public static final String POST_PARAM_SEPARATOR = "&"; private static final String DESTINATION_METHOD = "allEntrys"; private TextView textView; private URLConnection conn; public ActivityDataSource(TextView textView) { this.textView = textView; } @Override protected String doInBackground(String... params) { try { openConnection(); return readResult(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * Öffnet eine Verbindung {@link URLConnection}. * @throws IOException */ private void openConnection() throws IOException{ //StringBuffer für das zusammensetzen der URL StringBuffer dataBuffer = new StringBuffer(); dataBuffer.append(URLEncoder.encode("authkey", "UTF-8")); dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR); dataBuffer.append(URLEncoder.encode(AUTHKEY, "UTF-8")); dataBuffer.append(POST_PARAM_SEPARATOR); dataBuffer.append(URLEncoder.encode("method", "UTF-8")); dataBuffer.append(POST_PARAM_KEYVALUE_SEPARATOR); dataBuffer.append(URLEncoder.encode(DESTINATION_METHOD, "UTF-8")); //Adresse der PHP Schnittstelle für die Verbindung zur MySQL Datenbank URL url = new URL("https://128.0.120.135/reader.php"); conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); wr.write(dataBuffer.toString()); wr.flush(); } /** * Ließt das Ergebnis aus der geöffneten Verbindung. * @return liefert ein String mit dem gelesenen Werten. * @throws IOException */ private String readResult()throws IOException{ String result = null; //Lesen der Rückgabewerte vom Server BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); StringBuilder sb = new StringBuilder(); String line = null; //Solange Daten bereitstehen werden diese gelesen. while ((line = reader.readLine()) != null) { sb.append(line); } return sb.toString(); } @Override protected void onPostExecute(String result) { if(!isBlank(result)) { //String[] arr = result.split("\\|"); this.textView.setText("3"); } } private boolean isBlank(String value){ return value == null || value.trim().isEmpty(); } }
Bzw. ich habs jetzt auch mal mit dem HttpUrlRequest probiert, zwar nicht mit deinem Tutorial, das hat leider nicht geklappt. Aber da bekomm ich, wenn ich http benutze den "CleartextTraffic not allowed" Fehler, und wenn ich https benutze das Ding mit "Trust anchor for certification path not found."
Muss ich vielleicht am Server was ändern? Ich habe dieses Tutorial benutzt: https://legacy.thomas-leister.…erbindungen-ermoeglichen/
-
Hatte die letzten Tage wenig Zeit, also dry für die späte Antwort. Ich habs jetzt so gemacht, dass ich einfach in meinen Server ein eigenes Zertifikat eingebaut hab (sagt man das so? Ich kenn mich in dem Bereich wie gesagt echt noch nicht aus...) Also kann man jetzt auch per https darauf zugreifen.
Der vorherige Fehler ist verschwunden, da ich allerdings kein offizielles Zertifikat nutze kommt wenn man sie jetzt aufruft immer diese Meldung "unsichere Verbindung" oder so, mich stört das nicht, Android allerdings schon
Code
Alles anzeigen07-25 09:36:31.089 11438-11438/? W/.osek.mysqltes: Unexpected CPU variant for X86 using defaults: x86 07-25 09:36:32.089 11438-11438/com.mysqltest.osek.mysqltest W/.osek.mysqltes: JIT profile information will not be recorded: profile file does not exits. 07-25 09:36:32.104 11438-11438/com.mysqltest.osek.mysqltest W/.osek.mysqltes: JIT profile information will not be recorded: profile file does not exits. 07-25 09:36:32.749 11438-11438/com.mysqltest.osek.mysqltest W/.osek.mysqltes: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection) 07-25 09:36:32.752 11438-11438/com.mysqltest.osek.mysqltest W/.osek.mysqltes: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection) 07-25 09:36:33.138 11438-11481/com.mysqltest.osek.mysqltest W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... 07-25 09:36:35.567 11438-11484/com.mysqltest.osek.mysqltest W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. 07-25 09:36:35.572 11438-11484/com.mysqltest.osek.mysqltest W/System.err: at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:229) at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192) at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149) at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) 07-25 09:36:35.573 11438-11484/com.mysqltest.osek.mysqltest W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:26) at com.mysqltest.osek.mysqltest.ActivityDataSource.openConnection(ActivityDataSource.java:53) at com.mysqltest.osek.mysqltest.ActivityDataSource.doInBackground(ActivityDataSource.java:28) at com.mysqltest.osek.mysqltest.ActivityDataSource.doInBackground(ActivityDataSource.java:13) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) 07-25 09:36:35.590 11438-11484/com.mysqltest.osek.mysqltest W/System.err: Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:661) at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:539) at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:495) at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418) at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:339) at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:208) at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:404) at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:375) at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:224) ... 22 more 07-25 09:36:35.591 11438-11484/com.mysqltest.osek.mysqltest W/System.err: Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. ... 34 more 07-25 09:37:03.458 11438-11490/com.mysqltest.osek.mysqltest W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:229) at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:192) at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:149) at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461) 07-25 09:37:03.459 11438-11490/com.mysqltest.osek.mysqltest W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:26) at com.mysqltest.osek.mysqltest.ActivityDataSource.openConnection(ActivityDataSource.java:53) at com.mysqltest.osek.mysqltest.ActivityDataSource.doInBackground(ActivityDataSource.java:28) at com.mysqltest.osek.mysqltest.ActivityDataSource.doInBackground(ActivityDataSource.java:13) at android.os.AsyncTask$2.call(AsyncTask.java:333) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 07-25 09:37:03.460 11438-11490/com.mysqltest.osek.mysqltest W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764) 07-25 09:37:03.461 11438-11490/com.mysqltest.osek.mysqltest W/System.err: Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:661) at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:539) at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:495) at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:418) at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:339) at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) 07-25 09:37:03.462 11438-11490/com.mysqltest.osek.mysqltest W/System.err: at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:208) at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:404) at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:375) at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:224) ... 22 more Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. ... 34 more
Kann man Android da irgendwie austricksen oder so, oder muss ich mir jetzt auch noch n ssl Zertifikat kaufen? D:
-
Nabend,
zur Vorgeschichte einfach meinen anderen Thread anschauen
Ich hab jetzt folgendes Tutorial probiert: https://draeger-it.blog/androi…ank-verbinden-16-01-2016/
Leider hab ich folgendes Problem:
Code07-15 22:22:26.785 14782-14802/com.mysqltest.osek.mysqltest W/System.err: java.io.IOException: Cleartext HTTP traffic to ***.*.***.*** not permitted
Wenn ich allerdings über den Browser zugreif wird die richtige Ausgabe angezeigt. Muss ich noch irgendwelche Configs ändern?
Hoffe jemand kann helfen
-
Also es läuft jetzt soweit Hab das jetzt mit PHP gelöst, danke an alle Antworten! Endlich mal n Forum wo kompetente Leute sind Ohne euch wär ich gar nicht drauf gekommen, dass es auch so geht, ist aber tatsächlich viel besser, als direkt
-
Xampp ist ja nur für Datenbanken, oder? Das Problem gerade liegt ja, dass die php nicht richtig aufgerufen wird.
Dass ich PHP erst noch extra konfigurieren muss wusste ich nicht, hatte damit vorher nie zu tun.. xD
Das is n gemieteter Server mit Linux -
Ich hab n rootserver mit apache
-
Also ich hab jetzt das mit der php Datei probiert, also die .php unter var/www abgelegt. Ich kann sie auch aufrufen, allerdings wird im Browser dann nur der Inhalt angezeigt... In allen Tutorials die ich dazu gefunden hab steht halt nur drin, was ich reinschreiben muss, nicht wo ich die Datei hinlegen muss, usw...
Code<?php mysql_connect("localhost","root","12345678"); mysql_select_db("TrafficDB"); $sql=mysql_query("CREATE TABLE IF NOT EXISTS user(name, age INTEGER)"); while($row=mysql_fetch_assoc($sql)) $output[]=$row; print(json_encode($output)); mysql_close(); ?>
Muss ich da noch irgendwas bestimmtes machen, dass das klappt?
-
Dein Link ist ja der MySQL Connector, den hab ich schon.. Aber wie kann ich den jetzt ins Projekt einbinden?
-
Hallo,
ich versuche gerade eine App zu programmieren, die mit MySQL arbeitet. Allerdings scheitere ich gerade daran, eine Verbindung zum MySQL Server auf meinem Laptop aufzubauen. Soweit ich es bis jetzt herausfinden konnte, liegt das am Treiber.
Also erstmal hier mein Code:Codepublic static void connect() { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database + "&user=" + user + "&password=" + pw); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } }
Da müsste soweit ja alles stimmen oder? Der schmeißt mir da immer ne ClassNotFoundException raus. Hier der Fehler: https://www.pic-upload.de/view…-07-06um11.55.45.png.html
Das Problem ist ja wohl ganz offensichtlich, dass der jdbc.Driver nicht erkannt wird/vorhanden ist/was weiß ich. Laut Google muss ich den ins Androidstudio implementieren, ich hab ihn auch schon runtergelassen und das dann versucht, sprich File -> Project Structure -> Dependencies -> + -> Jar-Dependencie und dann den MySQL-Connector hinzugefügt, Projekt neu geladen und dann das: https://www.pic-upload.de/view…-07-06um13.04.15.png.html
Also meine Frage jetzt, wie kann ich das beheben, bzw. was mach ich beim einfügen des Driver falsch? Ich hab was von der build.gradle gelesen, muss ich da noch was ändern? Bin leider was Android Programmierung angeht noch nicht so weit xD In IntelliJ hat bezüglich MySQL bisher immer alles einwandfrei funktioniert
Danke für alle Antworten,
Grüße
Osek