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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

受付中

android studio kotlin HttpsURLConnectionについて

退会済みユーザー

退会済みユーザー

総合スコア0

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0回答

0評価

0クリップ

238閲覧

投稿2022/02/02 17:36

編集2022/05/27 09:50

前提・実現したいこと

kotlinを使用しております
HttpsURLConnectionでWebAPIに接続し、最終的にJSONデータをTextViewに表示したいと考えております。

発生している問題・エラーコード

TextViewに、失敗したときに表示するよう設定したエラーコードが表示されてしまい上手く接続できておりません。
また、android studio の Logには赤字のエラーではありませんが、エラーメッセージがでております。
下記がログの内容になります。

2022-02-03 02:23:58.577 3461-3491/com.websarva.wings.android.httprequest W/System.err: java.io.FileNotFoundException: https://bookocr.cognitiveservices.azure.com/vision/v3.2/ocr?language=ja&detectOrientation=true&model-version=latest 2022-02-03 02:23:58.577 3461-3491/com.websarva.wings.android.httprequest W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:255) 2022-02-03 02:23:58.577 3461-3491/com.websarva.wings.android.httprequest W/System.err: at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:211) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:30) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at com.websarva.wings.android.httprequest.MainActivity$onCreate$1$visionTask$1.doInBackground(MainActivity.kt:74) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at com.websarva.wings.android.httprequest.MainActivity$onCreate$1$visionTask$1.doInBackground(MainActivity.kt:51) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at android.os.AsyncTask$3.call(AsyncTask.java:394) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:266) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 2022-02-03 02:23:58.578 3461-3491/com.websarva.wings.android.httprequest W/System.err: at java.lang.Thread.run(Thread.java:923)

該当のソースコード

class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //viewを取得 val img_view = findViewById<ImageView>(R.id.img_view) val onYesClick = findViewById<Button>(R.id.onYesClick) val txt_result = findViewById<TextView>(R.id.textView) //画像を表示 val bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.sample) img_view.setImageBitmap(bitmap) //はいが押されたら onYesClick.setOnClickListener { //イメージをストリームに変換 val outputStream = ByteArrayOutputStream() bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, outputStream) val Inputstream = outputStream.toByteArray() //非同期でAPIリクエストを宣言 val visionTask = object : AsyncTask<InputStream, String, String>(){ override fun doInBackground(vararg params: InputStream?): String { //APIを叩く(バックグラウンド処理) val url = URL("https://bookocr.cognitiveservices.azure.com/vision/v3.2/ocr?language=ja&detectOrientation=true&model-version=latest") var reader: BufferedReader? = null val buffer: StringBuffer var connection = url.openConnection() as HttpsURLConnection //HTTpsURLConnection try { connection.connectTimeout = 1000 connection.readTimeout = 1000 connection.useCaches = false connection.setRequestProperty("Content-Type", "application/octet-stream") connection.setRequestProperty( "****************", "value" )//apikey connection.requestMethod = "POST" connection.setFixedLengthStreamingMode(Inputstream.size) //APIを叩く connection.connect() //Bodyの書き込み val stream = connection.inputStream reader = BufferedReader(InputStreamReader(stream)) buffer = StringBuffer() var line: String? while (true) { line = reader.readLine() if (line == null) { break } buffer.append(line) Log.d("CHECK", buffer.toString()) } //Stringでreturn return buffer.toString() //エラーを処理 } catch (e: MalformedURLException) { e.printStackTrace() } catch (e: IOException) { e.printStackTrace() } catch (e: JSONException) { e.printStackTrace() } //finallyで接続を切断 finally { connection?.disconnect() try { reader?.close() } catch (e: IOException) { e.printStackTrace() } } //失敗した時のエラーコード return "error" }//doinBack //返ってきたデータをビューに反映させる処理 override fun onPostExecute(result: String?) { val textView =findViewById<TextView>(R.id.textView) super.onPostExecute(result) if(result == null) return textView.text = result } }//AsyncTask //タスクの起動 visionTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) } } } コード

コードの不備などがございましたらご指摘よろしくお願いいたします。
参考にさせていただいたサイトになります。
https://qiita.com/minme31/items/a9636cb0453524c64e67

良い質問の評価を上げる

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

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

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

気になる質問をクリップする

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

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

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

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

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

hoshi-takanori

2022/02/03 06:28

HttpURLConnection が FileNotFoundException になるのは http のステータスが 404 の時らしいので、URL が間違ってるか、使い方がおかしいのでは。画像を API に送信してるようには見えないし…。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。