Android 无法添加的URL以使用openweather从api调用获取数据
这是我得到错误的函数Android 无法添加的URL以使用openweather从api调用获取数据,android,kotlin,Android,Kotlin,这是我得到错误的函数 override fun doInBackground(vararg p0: String?): String? { var response:String? try { response = URL("https://api.openweathermap.org/data/2.5/weather?q=$city&units=metric&appid=$api").
override fun doInBackground(vararg p0: String?): String? {
var response:String?
try {
response = URL("https://api.openweathermap.org/data/2.5/weather?q=$city&units=metric&appid=$api").readText(Charsets.UTF_8)
}
catch (e: Exception){
response = null
}
return response
}
错误:“字符串”类型的表达式“URL”不能作为函数调用。
有人能帮我吗?我是科特林的新手
进口
import android.os.AsyncTask
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.provider.ContactsContract.CommonDataKinds.Website.URL
import android.view.View
import android.widget.ProgressBar
import android.widget.RelativeLayout
import android.widget.TextView
import androidx.loader.content.AsyncTaskLoader
import org.json.JSONObject
import java.lang.Exception
import java.nio.charset.Charset
import java.text.SimpleDateFormat
import java.util.*
您现在不应该使用AsynTask,因为它已被弃用,请尝试使用 但无论如何,由于您尚未提供您的
doInBackground
的完整代码,请尝试下面的示例,看看这是否对您有帮助
override fun doInBackground(vararg params: String?): String? {
var response: String? = null
try {
val url = URL("https://api.openweathermap.org/data/2.5/weather?q=london&units=metric&appid=YOUR_API_KEY")
val urlConnection: HttpURLConnection = url.openConnection() as HttpURLConnection
val stream: InputStream = BufferedInputStream(urlConnection.inputStream)
val bufferedReader = BufferedReader(InputStreamReader(stream))
val builder = StringBuilder()
var inputString: String?
while (bufferedReader.readLine().also { inputString = it } != null) {
builder.append(inputString)
}
val topLevel = JSONObject(builder.toString())
val main = topLevel.getJSONObject("main")
response = main.getDouble("temp").toString()
urlConnection.disconnect()
} catch (e: IOException) {
e.printStackTrace()
} catch (e: JSONException) {
e.printStackTrace()
}
return response
}
已修复问题,请查看PR
修复后运行的代码
你能展示你的导入内容吗?@Snoopy添加了导入内容如果可能的话,也请向上投票回答这是DoinBackground的完整代码你的问题片段中的一个是完整代码?如果是,那么你在这方面有很多问题,只是将URL转换为字符串不会使你的API得到执行,请尝试我共享的代码示例,并让我知道您可能有更好的参考请让我查看回购协议