【发布时间】:2017-07-13 05:40:38
【问题描述】:
我正在尝试在我的 android projet 中使用 web 服务数据
URL url = null;
HttpURLConnection conn = null;
try {
url = new URL("http://ip.jsontest.com/");
conn = (HttpURLConnection) url.openConnection();
conn.connect();
int response = conn.getResponseCode(); //fail
Log.d("","success!");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
conn.disconnect();
}
调用conn.getResponseCode() 时代码失败。
调用conn.getInputStream() 或conn.getContent() 时也是如此。
不抛出异常。
conn.disconnect()(在 finally 块中)在 conn.connect() 之后执行
在我的 AndroidManifest 中有
<uses-permission android:name="android.permission.INTERNET" />
编辑
我在使用 AsyncTask 时遇到了同样的问题
public class DataAccess extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
//snackbar.show();
}
@Override
protected String doInBackground(String... strings) {
InputStream inputStream = null;
HttpURLConnection conn = null;
String stringUrl = strings[0];
try {
URL url = new URL(stringUrl);
conn = (HttpURLConnection) url.openConnection();
conn.connect();
int response = conn.getResponseCode();
inputStream = conn.getInputStream();
if (inputStream == null) {
return null;
}
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader reader = new BufferedReader(inputStreamReader);
StringBuffer buffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line);
buffer.append("\n");
}
return new String(buffer);
} catch (IOException e) {
return null;
}
finally {
if (conn != null) {
conn.disconnect();
}
if (inputStream != null) {
try {
inputStream.close();
}
catch (IOException ignored) {
}
}
}
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s == null) {
//resultsTextView.setText("Erreur");
} else {
//resultsTextView.setText(s);
}
//snackbar.dismiss();
}
}
【问题讨论】:
-
使用扩展异步任务的类
-
检查您的设备中是否有互联网。
-
我在使用 AsycTask 时遇到了同样的问题
-
是的,我的设备上有互联网
-
我复制您的代码并运行它...有效。你的设备操作系统版本是多少?
标签: android android-studio httpurlconnection