【发布时间】:2022-01-13 03:58:34
【问题描述】:
我是 Kotlin 语言的新手,并尝试从各种 YouTube 教程和其他在线文章中学习。我从视频中学到了什么,并按照步骤使用免费的 API 货币汇率创建了一个简单的货币转换器。下面是获取汇率结果的函数。
private fun getApiResult(){
var baseCurrency = "EUR"
var convertedToCurrency = "USD"
var conversionRate = 0f
if(et_firstConversion != null && et_firstConversion.text.isNotEmpty() && et_firstConversion.text.isNotBlank()){
val API = "http://data.fixer.io/api/latest?access_key=a22e608d4311d9ade9221a2abadb111e&symbols=$convertedToCurrency,AUD,CAD,PLN,MXN&format=1"
if(baseCurrency == convertedToCurrency){
Toast.makeText(applicationContext,"Cannot convert the same currency", Toast.LENGTH_SHORT).show()
} else {
GlobalScope.launch(Dispatchers.IO){
try {
val apiResult = URL(API).readText()
val jsonObject = JSONObject(apiResult)
conversionRate = jsonObject.getJSONObject("rates").getString(convertedToCurrency).toFloat()
Log.d("Main", "$conversionRate")
Log.d("Main", apiResult)
withContext(Dispatchers.Main){
val text = ((et_firstConversion.text.toString().toFloat()) * conversionRate).toString()
et_secondConversion?.setText(text)
}
} catch (e:Exception){
Log.e("Main", "$e")
}
}
}
}
}
问题是异常被触发并显示以下内容:cleartext http traffic is not permitted
在 Manifest.xml 中,我设置了以下内容:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
免费 API 对免费用户非常严格,不允许使用 Https。我也不确定编码(它的实现方式)是否正在以正确的方式实现我想要实现的目标。感谢您对代码提出任何建议/改进。
Android 5.0 API 21
【问题讨论】:
-
添加堆栈跟踪。