HttpURLConnection进行网络请求处理报错(FileNotFoundException的错误)解决

HttpURLConnection进行网络请求处理报错(FileNotFoundException的错误)解决,第1张

HttpURLConnection进行网络请求处理报错(FileNotFoundException的错误)解决 HttpURLConnection报错解决

错误来源

在之前通过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开发的同学,但这不是所有的错误情况,后续如何有新的错误出现,欢迎大家补充!!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5696474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存