Как проверить, существует ли URL или возвращается 404 с Java?

    LayoutInflater inflater = LayoutInflater.from(HistoryActivity.this);
    final View vv = inflater.inflate(R.layout.dialog_processing_tts, null);
    final AlertDialog.Builder alert = new AlertDialog.Builder(
            HistoryActivity.this);
    alert.setTitle("Delete");
    alert.setView(vv);
    alert.setCancelable(false)
            .setPositiveButton("Delete", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    databaseHelperClass.deleteHistory(list.get(position).getID());
                    list.clear();
                    setAdapterForList();

                }
            })
            .setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });

    final AlertDialog dialog = alert.create();
    dialog.show();
72
задан Sergio del Amo 4 September 2009 в 10:58
поделиться

3 ответа

Используйте HttpUrlConnection , вызвав openConnection () на вашем объекте URL.

getResponseCode () даст вам ответ HTTP один раз вы читали из соединения.

например

   URL u = new URL("http://www.example.com/"); 
   HttpURLConnection huc = (HttpURLConnection)u.openConnection(); 
   huc.setRequestMethod("GET"); 
   huc.connect() ; 
   OutputStream os = huc.getOutputStream(); 
   int code = huc.getResponseCode(); 

(не проверено)

23
ответ дан 24 November 2019 в 12:39
поделиться

В вашем коде все в порядке. Это NBC.com обманывает вас. Когда NBC.com решает, что ваш браузер не может отображать PDF, он просто отправляет обратно веб-страницу независимо от того, что вы запрашиваете, даже если она не существует.

Вам нужно обмануть его, сообщив, что ваш браузер поддерживает способный, что-то вроде,

conn.setRequestProperty("User-Agent",
    "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.13) Gecko/2009073021 Firefox/3.0.13");
12
ответ дан 24 November 2019 в 12:39
поделиться

Вы можете добавить

HttpURLConnection.setFollowRedirects(false);
// note : or
//        huc.setInstanceFollowRedirects(false)

, если не хотите следовать перенаправлению (3XX)

Вместо того, чтобы выполнять «GET», «HEAD» - это все, что вам нужно.

huc.setRequestMethod("HEAD");
return (huc.getResponseCode() == HttpURLConnection.HTTP_OK);
57
ответ дан 24 November 2019 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: