【发布时间】:2018-09-26 19:18:51
【问题描述】:
所以我正在尝试从 URL 读取流并将结果设置在文本视图中。 问题是代码 Android Studio 没有在我的设备上返回任何结果,而 net beans 上的相同代码返回流输出。我不明白问题出在哪里,因为我使用的是在 Android Studio 和 Netbeans 中使用的相同代码。Als android studio 上的应用程序没有崩溃或抛出任何错误。
只是为了让您知道我已经在手机浏览器中打开了 android studio 代码中的 URL 并且它正在工作。我还在清单中添加了互联网权限。而且我确实将函数changeText放在“onClick”属性中。
以下代码在 NetBeans 和 Android Studio(在我的 Galaxy S6 上)上进行了测试。
Android Studio 代码:
package com.example.mohammed.acc;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
public void changeText (View v){
TextView t1 = (TextView)findViewById(R.id.t1);
URL url;
HttpURLConnection con;
try{
StringBuilder sb = new StringBuilder();
url = new URL("http://192.168.1.104:8000/api");
con = (HttpURLConnection) url.openConnection();
BufferedInputStream in = new BufferedInputStream(con.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String Line = "";
while((Line = reader.readLine()) != null){
sb.append(Line);
}
t1.append(sb.toString());
in.close();
}
catch (MalformedURLException ex) {
t1.setText(ex.getMessage());
}
catch (IOException ex){
t1.setText(ex.getMessage());
} catch (Exception ex){
t1.setText(ex.getMessage());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
NetBeans 代码:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication21;
import java.io.BufferedInputStream;
import java.util.Stack;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class JavaApplication21 {
public static void main(String[] args) {
try{
StringBuilder sb = new StringBuilder();
URL url = new URL("http://127.0.0.1:8000/api");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedInputStream in = new BufferedInputStream(con.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String Line = "";
while((Line = reader.readLine()) != null){
sb.append(Line);
}
System.out.print(sb.toString());
in.close();
}
catch (Exception ex){
System.out.print(ex.getMessage());
}
}
}
NetBeans 输出: 如您所见,它正在工作。 Android studio,我手机的输出: 记录快照 这是在运行并单击按钮之后。
【问题讨论】:
-
@JeelVankhede 这应该是一个按钮点击处理程序。所以不,他没有。
-
我提到我确实调用了该函数。
-
我也使用相同的函数将 textView 更改为“Hello World”并且它工作正常。
-
t1.append(sb.toString())你的意思是setText()在 while 循环之后的 try 块中吗? -
它是 t1.setText()。但是在这里发布代码之前我忘了改回来。
标签: java android android-studio netbeans httpurlconnection