• 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

0 głosów
658 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 (283,500 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ź 366 wizyt
pytanie zadane 6 lutego 2018 w Java przez fipooo Bywalec (2,880 p.)
0 głosów
0 odpowiedzi 254 wizyt
0 głosów
0 odpowiedzi 183 wizyt

93,776 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...