【问题标题】:bufferedReader for URL throws IOExceptionURL 的 bufferedReader 抛出 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"); } } }

【问题讨论】:

    标签: android


    【解决方案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 在您的模拟器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多