第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

HttpURLConnection超時(shí)設(shè)置

HttpURLConnection超時(shí)設(shè)置

紅糖糍粑 2019-11-28 12:54:13
如果要用5秒鐘以上的時(shí)間來連接URL,我想返回false-使用Java怎么可能?這是我用來檢查URL是否有效的代碼HttpURLConnection.setFollowRedirects(false);HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();con.setRequestMethod("HEAD");return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
查看完整描述

3 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

HttpURLConnection有一個(gè)setConnectTimeout方法。


只需將超時(shí)設(shè)置為5000毫秒,然后捕獲 java.net.SocketTimeoutException


您的代碼應(yīng)如下所示:



try {

   HttpURLConnection.setFollowRedirects(false);

   HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();

   con.setRequestMethod("HEAD");


   con.setConnectTimeout(5000); //set timeout to 5 seconds


   return (con.getResponseCode() == HttpURLConnection.HTTP_OK);

} catch (java.net.SocketTimeoutException e) {

   return false;

} catch (java.io.IOException e) {

   return false;

}


查看完整回答
反對(duì) 回復(fù) 2019-11-28
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊

如果HTTP連接沒有超時(shí),則可以在后臺(tái)線程本身(AsyncTask,Service等)中實(shí)現(xiàn)超時(shí)檢查器,以下類是Customize AsyncTask的示例,該示例在特定時(shí)間段后超時(shí)


public abstract class AsyncTaskWithTimer<Params, Progress, Result> extends

    AsyncTask<Params, Progress, Result> {


private static final int HTTP_REQUEST_TIMEOUT = 30000;


@Override

protected Result doInBackground(Params... params) {

    createTimeoutListener();

    return doInBackgroundImpl(params);

}


private void createTimeoutListener() {

    Thread timeout = new Thread() {

        public void run() {

            Looper.prepare();


            final Handler handler = new Handler();

            handler.postDelayed(new Runnable() {

                @Override

                public void run() {


                    if (AsyncTaskWithTimer.this != null

                            && AsyncTaskWithTimer.this.getStatus() != Status.FINISHED)

                        AsyncTaskWithTimer.this.cancel(true);

                    handler.removeCallbacks(this);

                    Looper.myLooper().quit();

                }

            }, HTTP_REQUEST_TIMEOUT);


            Looper.loop();

        }

    };

    timeout.start();

}


abstract protected Result doInBackgroundImpl(Params... params);

}

一個(gè)樣品


public class AsyncTaskWithTimerSample extends AsyncTaskWithTimer<Void, Void, Void> {


    @Override

    protected void onCancelled(Void void) {

        Log.d(TAG, "Async Task onCancelled With Result");

        super.onCancelled(result);

    }


    @Override

    protected void onCancelled() {

        Log.d(TAG, "Async Task onCancelled");

        super.onCancelled();

    }


    @Override

    protected Void doInBackgroundImpl(Void... params) {

        // Do background work

        return null;

    };

 }


查看完整回答
反對(duì) 回復(fù) 2019-11-28
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

我可以通過添加簡(jiǎn)單的行來獲得針對(duì)此類類似問題的解決方案


HttpURLConnection hConn = (HttpURLConnection) url.openConnection();

hConn.setRequestMethod("HEAD");

我的要求是知道響應(yīng)代碼,為此,僅獲取元信息就足夠了,而不是獲取完整的響應(yīng)正文。


默認(rèn)的請(qǐng)求方法是GET,要花很多時(shí)間才能返回,最后拋出了SocketTimeoutException。當(dāng)我將Request Method設(shè)置為HEAD時(shí),響應(yīng)速度非???。


查看完整回答
反對(duì) 回復(fù) 2019-11-28
  • 3 回答
  • 0 關(guān)注
  • 1727 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)