错误来源
在之前通过Eclipse+ADT进行android开发的过程中这个FileNotFoundException:http:192.XXXX./项目(这里随便取了一个路径)可以完整的运行项目没有出现任何问题,
但是在我将项目转移到AS(Android Studio)上进行开发测试的时候,在HttpURLConnection的链接问题上却给我报错了
System.err: java.io.FileNotFoundException:
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnection)
大致是上述的问题报错,让我很纳闷,之前可以平稳运行的,迁移到AS上就不行了。
解决 首先复制了错误取了百度找到了两个方法1、注释掉setDoOutput(true)
HttpURLConnection conn;
conn = (HttpURLConnection)new URL("http://XXXXXXXXXXXX:8080/project/androidaction/g112.action?area="+java.net.URLEncoder.encode(area)).openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(3000);//设置读取超时的毫秒数
conn.setConnectTimeout(3000);//设置连接超时的毫秒数
//已经注释掉
conn.setDoInput(true);
conn.setUseCaches(false);
input = conn.getInputStream();//得到连接输入流
InputStreamReader inputStreamReader = new InputStreamReader(input);
//为得到JSON数据创建BufferedReader
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line = "";
while((line = bufferedReader.readLine()) != null) {
data = data + line+"\n";
}
分析:
若设置了conn.setRequestMethod(“GET”);同时设置setDoOutput(true),导致httpCon.setDoOutput(true),将导致请求以post方式提交,即使设置了httpCon.setRequestMethod(“GET”);将代码中的httpCon.setDoOutput(true);
因此我们需要对其进行删除
2、path请求路径有中文字符
现在想想也感觉奇怪,之前在Eclipse+ADT开发上这个功能可以实现,中文字符也不需要转化,但现在出现了错误,希望可以帮到大家,在我们传递参数的路径上,若是有中文数组存在,需要将其转化以下,
·java.net.URLEncoder.encode("中国");
总结
以上便是我所遇到的FileNotFoundException的报错问题,在上面两个错误改正后,我的代码能够平稳运行,希望可以帮到在学习Android开发的同学,但这不是所有的错误情况,后续如何有新的错误出现,欢迎大家补充!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)