• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Logowanie w aplikacji android, błąd TSL

Object Storage Arubacloud
0 głosów
352 wizyt
pytanie zadane 4 maja 2021 w Java przez chodztuogorku Nowicjusz (120 p.)

Hej, próbuje zrobić apke w android studio, która będzie wykonywała proste czynności w bazie mysql, jak logowanie, rejestracja czy wprowadzanie danych. Baza jest lokalna i łączę się z nią przez php. Wyskakuje mi błąd z parsowaniem TSL i nie mam kompletnie pomysłu jak to rozwiązać. Błąd pokazuje w tej linijce(58)

OutputStream outputStream = httpURLConnection.getOutputStream();

Cała klasa

public class zaloguj extends AppCompatActivity {
public TextView zarejestruj,przypomnij;
public Button zaloguj;
public EditText login,haslo;
public String Pass,Log;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_zaloguj);

    zaloguj = (Button)findViewById(R.id.button2);
    zarejestruj = (TextView)findViewById(R.id.textView11);
    login = (EditText)findViewById(R.id.editText2);
    haslo = (EditText)findViewById(R.id.editText3);
    final AlertDialog alertDialog2 = new AlertDialog.Builder(zaloguj.this).create();

    zarejestruj.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i2 = new Intent(zaloguj.this, zarejestruj.class);
            startActivity(i2);
        }
    });
    zaloguj.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) {

        String Type = "login";
        Log = login.getText().toString();
        Pass = haslo.getText().toString();
        if(Log.isEmpty() || Pass.isEmpty())
        {
            alertDialog2.setTitle("xD");
            alertDialog2.show();
        }
        final String login_url = "https://192.168.88.115:8080/login.php";
        Thread thread = new Thread(new Runnable() 
        {

            @Override
            public void run() 
            {
                try 
                {
                    try 
                    {

                        String user = Log;
                        String pass = Pass;
                        URL url = new URL(login_url);
                        HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                        httpURLConnection.setRequestMethod("POST");
                        httpURLConnection.setDoOutput(true);
                        httpURLConnection.setDoInput(true);
                        OutputStream outputStream = httpURLConnection.getOutputStream();
                        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8"));
                        String post_data = URLEncoder.encode("user","UTF-8")+"="+URLEncoder.encode(user,"UTF-8")+"&"
                            +URLEncoder.encode("pass","UTF-8")+"="+URLEncoder.encode(pass,"UTF-8");
                        bufferedWriter.write(post_data);
                        bufferedWriter.flush();
                        bufferedWriter.close();
                        outputStream.close();
                        InputStream inputStream = httpURLConnection.getInputStream();
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
                        String result = "";
                        String line = "";
                        while((line = bufferedReader.readLine())!=null)
                        {
                            result+=line;
                        }
                        bufferedReader.close();
                        inputStream.close();
                        httpURLConnection.disconnect();
                        if(result == "Zalogowano pomyslnie")
                        {
                            Intent i1 = new Intent(com.example.dyp1.zaloguj.this, Core.class);
                            startActivity(i1);
                        }
                        else if(result == "nie udalo sie zalogowac")
                            {
                            alertDialog2.setTitle("logowanie jeblo");
                            alertDialog2.show();
                            }

                        } catch (MalformedURLException e) 
                        {
                            e.printStackTrace();
                        } 
                        catch (IOException e) 
                        {
                            e.printStackTrace();
                        }
                    } 
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
            }
        });

        thread.start();
   
    }
});

}

I błąd, który wyrzuca android

!W/System.err: javax.net.ssl.SSLException: Unable to parse TLS packet header
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:807)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:747)
        at com.android.org.conscrypt.ConscryptEngine.unwrap(ConscryptEngine.java:712)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:849)
        at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.access$100(ConscryptEngineSocket.java:722)
        at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:238)
        at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:217)
        at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:196)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:153)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262)
W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:219)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:30)
        at com.example.dyp1.zaloguj$2$1.run(zaloguj.java:91)
        at java.lang.Thread.run(Thread.java:923)

 

1 odpowiedź

0 głosów
odpowiedź 7 czerwca 2021 przez androidGuy Początkujący (360 p.)
Pewnie problem już rozwiązany, ale jeśli nie to użyj biblioteki retrofit do obsługi wywołań sieciowych.

Tutoriale możesz znaleźć w google wpisując: retrofit android tutorial.

Jeżeli błąd się powtórzy to wklej tutaj w odpowiedzi.
komentarz 7 czerwca 2021 przez Wiciorny Ekspert (269,710 p.)

tutaj protokół będzie zły, zamiast https - powinno być

final String login_url = "http://192.168.88.115:8080/login.php";

bo przedostatnie wywołania na stosie to własnie secure handlery https://github.com/google/conscrypt 

Podobne pytania

0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 6 lutego 2018 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
0 odpowiedzi 109 wizyt
0 głosów
0 odpowiedzi 105 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...