Java 在从其他类创建时调用静态字符串
如何在onCreate中调用getContent? 我会犯这样的错误Java 在从其他类创建时调用静态字符串,java,android,Java,Android,如何在onCreate中调用getContent? 我会犯这样的错误 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity: android.os.NetworkOnMainThreadException Caused by: android.os.NetworkOnMainThreadException main.java protected void onCr
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity: android.os.NetworkOnMainThreadException
Caused by: android.os.NetworkOnMainThreadException
main.java
protected void onCreate(Bundle savedInstanceState) {
Log.d("URL", HttpUtils.getContents("http://google.com"));
}
HttpUtils.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class HttpUtils {
public static String getContents(String url) {
String contents ="";
try {
URLConnection conn = new URL(url).openConnection();
InputStream in = conn.getInputStream();
contents = convertStreamToString(in);
} catch (MalformedURLException e) {
Log.v("MALFORMED URL EXCEPTION");
} catch (IOException e) {
Log.e(e.getMessage(), e);
}
return contents;
}
private static String convertStreamToString(InputStream is) throws UnsupportedEncodingException {
BufferedReader reader = new BufferedReader(new
InputStreamReader(is, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
}
在android中,你不能在UI线程上执行任何网络任务。因此,您必须在不同的线程上执行联网任务。为此,您可以使用普通java线程,但在android中这不是一个好方法。您应该使用异步任务 你可以在谷歌上学习任何好的教程