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得到执行,请尝试我共享的代码示例,并让我知道您可能有更好的参考请让我查看回购协议