URL 的 bufferedReader 抛出 IOException

Posted

技术标签:

【中文标题】URL 的 bufferedReader 抛出 IOException【英文标题】:bufferedReader for URL throws IOException 【发布时间】:2011-06-10 21:21:41 【问题描述】:

我的代码可以连接到我的计算机 php 文件并在 java 程序中输出正确的文本。当我尝试将它添加到我的 android 项目以显示高分时,它总是抛出一个 IOException,我不知道为什么。这是我的代码。任何帮助将不胜感激。

包 com.enophz.spacetrash; 导入 java.io.BufferedReader; 导入 java.io.IOException; 导入 java.io.InputStreamReader; 导入 java.net.MalformedURLException; 导入 java.net.URL; 导入 java.net.URLConnection; 导入android.app.Activity; 导入android.content.Intent; 导入android.os.Bundle; 导入android.view.View; 导入android.widget.Button; 导入 android.widget.TextView; 公共课分数扩展活动 //私有TextView HscoreText; /** 在第一次创建活动时调用。 */ 公共无效 onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.scores); 下一个按钮 = (Button) findViewById(R.id.Button01); next.setOnClickListener(new View.OnClickListener() public void onClick(查看视图) 意图 myIntent = new Intent(view.getContext(), Menu.class); 开始活动(我的意图); ); TextView HscoreText = (TextView) findViewById(R.id.text); 尝试 URL page = new URL("http://192.168.1.108/score.php"); URLConnection pageconnection = page.openConnection(); BufferedReader in = new BufferedReader( 新的 InputStreamReader( pageconnection.getInputStream())); 附寄(); HscoreText.setText("成功了!"); 捕获(错误的 URL 异常 e) HscoreText.setText("MalformedURL"); 捕获(IOException e) HscoreText.setText("IOException");

【问题讨论】:

【参考方案1】:

我不知道您希望从 php 页面获得什么类型的内容。但以下内容可能会帮助您从 Web 服务器获取内容:

HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(myUrl);

HttpResponse response = httpClient.execute(httpGet, localContext);
BufferedReader reader = new BufferedReader(new InputStreamReader(
    response.getEntity().getContent(), "UTF-8"));

现在 JSON 将是单行,因此您可以使用:

String sResponse = reader.readLine();
JSONObject JResponse = new JSONObject(sResponse);

否则将整个内容作为字符串获取:

String sResponse;
StringBuilder s = new StringBuilder();

while ((sResponse = reader.readLine()) != null) 
s = s.append(sResponse);

【讨论】:

我切换了代码以匹配您的示例。它可以编译,但是当我在模拟器中运行它时它仍然会引发 IOException。我的 score.php 页面只是吐出了一行 JSON。 两个示例中的违规行是 BufferedReader。使用 BufferedReader 不是从网络连接中读取的最佳方式吗? 观察 LogCat 中的错误。检查您是否在清单中提供互联网连接权限。此外,您的计算机本地主机将是 10.0.2.2 在您的模拟器中。

以上是关于URL 的 bufferedReader 抛出 IOException的主要内容,如果未能解决你的问题,请参考以下文章

java网络URL请求编程入门

向指定URL发送GET和POST请求

Java联网技术之一URl

phantomjs抛出IOException

在 Java 中多次从 BufferedReader 读取

JAVA-初步认识-I/O流(字符流-缓冲区-BufferedReader-ReadLine方法原理)