Получение HTML из URL работает для Google, но не для веб-сайта, который я хочу. Я получаю SSLProtocolException на желаемом сайте - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь прочитать HTML-код из URL-адреса в строку как часть приложения для Android.Все отлично работает, когда я использую "https://www.google.com",, но когда я использую веб-сайт, с которого я хочу получить данные," https://bmorgan17.github.io/DCD/resources/data_raw.html" Я получаю эту ошибку.

Error: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x5c959090: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x59282c38:0x00000000)

Вот мой код:

public class RecipeActivity extends AppCompatActivity {
static String result;

static private class RetrieveData extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urlStr){
        // do stuff on non-UI thread
        StringBuilder htmlCode = new StringBuilder();
        String LOG_TAG = "APP";
        try{
            URL url = new URL(urlStr[0]);
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

            String inputLine;

            while ((inputLine = in.readLine()) != null) {
                htmlCode.append(inputLine);
            }

            in.close();
        } catch (Exception e) {
            e.printStackTrace();
            Log.wtf(LOG_TAG, "Error: " + e.getMessage());
            Log.wtf(LOG_TAG, "HTML CODE: " + htmlCode);
        }
        Log.wtf(LOG_TAG, "HTML CODE: " + htmlCode);
        return htmlCode.toString();
    }

    @Override
    protected void onPostExecute(String htmlCode){
        // do stuff on UI thread with the html
        super.onPostExecute(htmlCode);
        result = htmlCode;
    }
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.activity_recipe);
    TextView out = findViewById(R.id.tvHttp);

    new RetrieveData().execute("https://bmorgan17.github.io/DCD/resources/data_raw.html");
    out.setText(result);
}

}

Если бы кто-нибудь мог мне помочь, было бы здорово!

Редактировать:

  • Galaxy Nexus
  • Версия Android: 4.2.2
  • Мин API: 17

Я использую это как тестовый телефон, потому что этонамного быстрее, чем эмулятор.Если мне нужно сделать эмулятор для нового телефона, пожалуйста, скажите мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...