「Android/kotlin/http通信」の版間の差分
ナビゲーションに移動
検索に移動
| 47行目: | 47行目: | ||
import android.os.AsyncTask | import android.os.AsyncTask | ||
class HttpAsyncTask : AsyncTask<Void, Void, Boolean>() { | class HttpAsyncTask : AsyncTask<Void, Void, Boolean>() { | ||
override fun onPreExecute() { | |||
Log.i(TAG, "onPreExecute") | |||
} | |||
override fun doInBackground(vararg p: Void?): Boolean { | override fun doInBackground(vararg p: Void?): Boolean { | ||
var httpRequest = HttpRequest() | var httpRequest = HttpRequest() | ||
2020年2月14日 (金) 05:13時点における版
準備
AndroidManifext.xmlに以下を追加しておく。
<uses-permission android:name="android.permission.INTERNET" />
サンプル
HttpRequest.kt
class HttpRequest {
private var body = "";
fun request(requestUrl: String): Boolean {
if (requestUrl.isEmpty()) {
Log.w(TAG, "URLが空です。")
return false
}
val url = URL(requestUrl)
val urlConnection = url.openConnection() as HttpURLConnection
urlConnection.requestMethod = "GET"
urlConnection.connect()
val br = BufferedReader(InputStreamReader(urlConnection.inputStream))
val sb = StringBuilder()
for (line: String? in br.readLines()) {
line?.let { sb.append(line) }
}
br.close()
body = sb.toString()
return true
}
fun getBody(): String {
return body
}
companion object {
private const val TAG = "HttpRequest"
}
}
参考:https://qiita.com/naoi/items/8df1409ad48ad8f3c632
asyncでアクセス
直アクセスだとアクセスできないのでAsyncTaskをかます。
起動方法
var task = HttpAsyncTask(); task.execute();
HttpAsyncTask.kt
import android.os.AsyncTask
class HttpAsyncTask : AsyncTask<Void, Void, Boolean>() {
override fun onPreExecute() {
Log.i(TAG, "onPreExecute")
}
override fun doInBackground(vararg p: Void?): Boolean {
var httpRequest = HttpRequest()
var success: Boolean = httpRequest.request("https://example.com/?hogehoge")
Log.i(TAG, "body=" + httpRequest.getBody())
return true
}
override fun onPostExecute(flag: Boolean) {
Log.i(TAG, "onPostExecute flag=" + flag)
super.onPostExecute(flag)
}
}