Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用URL时无法解决符号错误 类后台线程扩展异步任务{ 受保护的布尔doInBackground(字符串…参数){ 字符串UR=“127.0.0.1/abc/index.php”; 试一试{ URL=新URL(UR); }捕获(格式错误){ e、 printStackTrace(); } HttpURLConnection conn=(HttpURLConnection)url.openConnection(); } }_Java_Android_Android Asynctask_Try Catch_Httpurlconnection - Fatal编程技术网

Java 使用URL时无法解决符号错误 类后台线程扩展异步任务{ 受保护的布尔doInBackground(字符串…参数){ 字符串UR=“127.0.0.1/abc/index.php”; 试一试{ URL=新URL(UR); }捕获(格式错误){ e、 printStackTrace(); } HttpURLConnection conn=(HttpURLConnection)url.openConnection(); } }

Java 使用URL时无法解决符号错误 类后台线程扩展异步任务{ 受保护的布尔doInBackground(字符串…参数){ 字符串UR=“127.0.0.1/abc/index.php”; 试一试{ URL=新URL(UR); }捕获(格式错误){ e、 printStackTrace(); } HttpURLConnection conn=(HttpURLConnection)url.openConnection(); } },java,android,android-asynctask,try-catch,httpurlconnection,Java,Android,Android Asynctask,Try Catch,Httpurlconnection,当我使用上述代码时,在HttpURLConnection中,url变为红色,Android Studio显示一个错误,无法解析符号url。代码出了什么问题?将打开连接的行放入try子句中: class background_thread extends AsyncTask<String ,String , Boolean > { protected Boolean doInBackground(String... params) { String UR =

当我使用上述代码时,在HttpURLConnection中,url变为红色,Android Studio显示一个错误,无法解析符号url。代码出了什么问题?

将打开连接的行放入
try
子句中:

class background_thread extends AsyncTask<String ,String , Boolean > {

    protected Boolean doInBackground(String... params) {

        String UR = "127.0.0.1/abc/index.php";
        try {
            URL url = new URL(UR);
        } catch(MalformedURLException e) {
            e.printStackTrace();
        }

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    }

}
try {
    URL url = new URL(UR);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    // Do something...

} catch (IOException e) {
    e.printStackTrace();
} finally {
    conn.disconnect();
}
这是因为有效的
url
是本地的,它只在
try
子句中有效

或者在
try
子句之外声明
url

class background_thread extends AsyncTask<String ,String , Boolean > {

    protected Boolean doInBackground(String... params) {

        String UR = "127.0.0.1/abc/index.php";
        try {
            URL url = new URL(UR);
        } catch(MalformedURLException e) {
            e.printStackTrace();
        }

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    }

}
try {
    URL url = new URL(UR);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    // Do something...

} catch (IOException e) {
    e.printStackTrace();
} finally {
    conn.disconnect();
}

使用Java 7+,我们可以使用自动关闭功能:


有时你需要一个简单的“gradlew clean”

URL url;
try {
    url = new URL(UR);
} catch(MalformedURLException e) {
    e.printStackTrace();
}

try (HttpURLConnection conn = (HttpURLConnection) url.openConnection())

    // Do something...

} catch (IOException e) {
    e.printStackTrace();
}
或:


我遇到了同样的问题。只要做:

"Tools" -> "Android" -> "Sync Project with Gradle Files"
添加

解决缺少的解析符号

你当然也必须有这个:

import java.net.MalformedURLException;

其他答案已经涵盖了这一点。您没有添加或回答任何新问题。请仔细阅读问题。错误是“无法解析符号url”没有提到畸形的url异常。这两种方法中哪一种更好?像那样声明一个变量还是类型转换?至少声明变量时应该包含一个初始化值(
URL=null
)?@Michael我不知道哪个更好,但我更喜欢后者。因为现在我们可以在Android编程中使用Java7/8,所以我们可以使用AutoClosable
HttpURLConnection
InputStream
可自动关闭,而
URL
不可自动关闭。因此,我们应该分离try-catch子句,以使用
HttpURLConnection
InputStream
的自动关闭功能。
import java.net.MalformedURLException;
import java.net.URL;