質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

HttpURLConnectionでHTTPステータスコードを確認したい

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 290

ke-ke-

score 0

nakasho_dev 様のアドバイスをもとに修正2020/05/03

素人質問失礼いたします。サンプルにて学習中の初学者です。

対象URLがhttpsのサイトのHTMLを取得してTextViewに表示させたいです。

IOExceptionの例外が発生していて、ステータスコードを確認したいのですが出力方法がわかません。調べた限りではStacktraceは出力されず、IOExceptionの時は401とのことです出力方法がありましたら伺いたいです。

    protected String doInBackground(String... params) {
        publishProgress(30);
        SystemClock.sleep(3000);
        publishProgress(60);
        StringBuilder builder = new StringBuilder();
        try {
            URL url = new URL(params[0]);
            HttpURLConnection con = (HttpURLConnection)url.openConnection();
            con.setRequestMethod("GET");
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    con.getInputStream(), StandardCharsets.UTF_8));
            String line;
            while ((line = reader.readLine()) != null){
                builder.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        publishProgress(100);
        return builder.toString();
    }
2020-05-02 09:46:04.556 2546-18518/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_started com.google.android.apps.gsa.staticplugins.aa.c@516eb34
2020-05-02 09:46:04.557 2546-2546/com.google.android.googlequicksearchbox:search I/MicroDetectionWorker: onReady
2020-05-02 09:46:04.562 2546-18518/com.google.android.googlequicksearchbox:search I/MicrophoneInputStream: mic_close com.google.android.apps.gsa.staticplugins.aa.c@516eb34
2020-05-02 09:46:04.563 2546-18479/com.google.android.googlequicksearchbox:search I/MicroRecognitionRunner: Detection finished
2020-05-02 09:46:04.565 2546-18479/com.google.android.googlequicksearchbox:search W/ErrorReporter: reportError [type: 211, code: 524300]: Error reading from input stream
2020-05-02 09:46:04.569 2546-5516/com.google.android.googlequicksearchbox:search I/MicroRecognitionRunner: Stopping hotword detection.
2020-05-02 09:46:04.569 2546-18479/com.google.android.googlequicksearchbox:search W/ErrorProcessor: onFatalError, processing error from engine(4)
    com.google.android.apps.gsa.shared.speech.b.g: Error reading from input stream
        at com.google.android.apps.gsa.staticplugins.recognizer.j.a.a(SourceFile:28)
        at com.google.android.apps.gsa.staticplugins.recognizer.j.b.run(SourceFile:15)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile:14)
        at com.google.android.apps.gsa.shared.util.concurrent.a.bl.run(SourceFile:4)
        at com.google.android.apps.gsa.shared.util.concurrent.a.bl.run(SourceFile:4)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)
        at com.google.android.apps.gsa.shared.util.concurrent.a.ai.run(SourceFile:6)
     Caused by: com.google.android.apps.gsa.shared.exception.GsaIOException: Error code: 393238 | Buffer overflow, no available space.
        at com.google.android.apps.gsa.speech.audio.Tee.f(SourceFile:103)
        at com.google.android.apps.gsa.speech.audio.au.read(SourceFile:2)
        at java.io.InputStream.read(InputStream.java:101)
        at com.google.android.apps.gsa.speech.audio.ao.run(SourceFile:18)
        at com.google.android.apps.gsa.speech.audio.an.run(SourceFile:2)
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • nakasho_dev

    2020/05/02 12:07

    HTTPステータスコードを確認していませんが、ちゃんと対象URLに接続できているのでしょうか?
    そもそも対象URLがhttpだったりすると新しめのAndroidだと自動でブロックされます。

    キャンセル

  • ke-ke-

    2020/05/02 20:05

    ありがとうございます。

    パーミッション許可をしてませんでした。
    アプリは落ちなくなりましたが、同じくBufferedReader部分で例外に飛んでます。確認方法をググっても出てきません。

    HttpURLConnection con には下記のデータが入っているのですが。。
    「com.android.okhttp.internal.huc.HttpURLConnectionImpl:https:~」

    https://kokuzawa.github.io/blog/2016/12/15/httpurlconnection/
    こちらのサイトを参考に対応を考えています。

    キャンセル

  • nakasho_dev

    2020/05/02 22:10

    BODYを取得する前に、まずはResponseのStatusCodeを確認しましょう。
    また、理解が進んだり状況が変わったら質問本文を編集するようにしましょう。

    キャンセル

回答 1

0

まだ解決になるか分かりませんがひとまず指摘
現在参考にされているサイトはHttpUrlConnectionの使い方の一部しか紹介していません。
全体が分かるサイトを探してみましょう。
Webの記事を複数見て判断するようにした方が良いと思います。

上記のサイトだと一連の流れがあります。ステータスの取得方法もあります。

現在提示されているコードだとconnectメソッドを実行していません。

con.connect();

まずはconnectメソッドの実行とステータスの確認を実装してみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る