android访问网络Connetion reset by peer

tesky0125 2012-10-22 05:00:43
最近出现很诡异的情况,可能是我对内部细节不了解。

在android模拟器上访问外网获取数据成功,但把程序放到手机上,怎么也不行,我用java自带的net包写的。
运行到httpConn.getResponseCode()就异常,没有返回请求码。

异常信息是:java.net.SocketException:Connetion reset by peer。

哪位帮忙解答一下。谢谢啦。
...全文
286 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
毛鹰1 2013-01-26
  • 打赏
  • 举报
回复
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> 在AndroidManifest.xml 中。 没加的话。可以执行。但是会抛异常
毛鹰1 2013-01-26
  • 打赏
  • 举报
回复
试用了加xml网络权限木
tesky0125 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
最近出现很诡异的情况,可能是我对内部细节不了解。

在android模拟器上访问外网获取数据成功,但把程序放到手机上,怎么也不行,我用java自带的net包写的。
运行到httpConn.getResponseCode()就异常,没有返回请求码。

异常信息是:java.net.SocketException:Connetion reset by peer。

哪位帮忙解答一下。谢谢……
[/Quote]


/**
* 使用get请求以HttpClient org.apache.http请求数据
*
* @param path
* @return
* @throws IOException
* @throws ClientProtocolException
* @throws IOException
*/
public static String doGetByHttpClient(String path) throws ClientProtocolException, IOException {
HttpClient hc = new DefaultHttpClient(getHttpParams());
HttpGet request = new HttpGet(path);
System.out.println("1:============================");
// request.addHeader("Content-Type", "application/json; charset=utf-8");
HttpResponse response = hc.execute(request);
System.out.println("2:============================");
// System.out.println(response.getStatusLine().getStatusCode());
if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) {
// return EntityUtils.toString(response.getEntity());
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
builder.append(s);
}
if (reader != null)
reader.close();
return builder.toString();
}
return null;
}


在运行到
HttpResponse response = hc.execute(request);
时就会报错。java.net.SocketException:Connetion reset by peer。

求解答。。。
rylan_yan 2012-10-23
  • 打赏
  • 举报
回复

/**
* 使用get请求以普通方式java.net请求数据
*
* @param path
* @return
*/
public static String doGetByOrdinary(String path) {
HttpURLConnection httpConn = null;
BufferedReader reader = null;
try {
URL url = new URL(path);
httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setConnectTimeout(5000);
httpConn.setReadTimeout(5000);
if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
StringBuilder builder = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(httpConn
.getInputStream(), "UTF-8"));
for (String s = reader.readLine(); s != null; s = reader
.readLine()) {
builder.append(s);
}
return builder.toString();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null)
reader.close();
if (httpConn != null)
httpConn.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}



代码就是这样滴,在J2EE上运行正常,在手机上运行失败,是不是需要配置服务器的参数。。。
rylan_yan 2012-10-23
  • 打赏
  • 举报
回复
我也遇到一样的问题,在模拟器上可以访问,但是把程序安装到手机上就不行了,每次在请求数据时出错。

拜一拜,哪位来解答一下。

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧