Java 使用URL时无法解决符号错误 类后台线程扩展异步任务{ 受保护的布尔doInBackground(字符串…参数){ 字符串UR=“127.0.0.1/abc/index.php”; 试一试{ URL=新URL(UR); }捕获(格式错误){ e、 printStackTrace(); } HttpURLConnection conn=(HttpURLConnection)url.openConnection(); } }
当我使用上述代码时,在HttpURLConnection中,url变为红色,Android Studio显示一个错误,无法解析符号url。代码出了什么问题?将打开连接的行放入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 =
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,所以我们可以使用AutoClosableHttpURLConnection
或InputStream
可自动关闭,而URL
不可自动关闭。因此,我们应该分离try-catch子句,以使用HttpURLConnection
或InputStream
的自动关闭功能。
import java.net.MalformedURLException;
import java.net.URL;