Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么bufferreader在readLine()上返回null_Java_Android - Fatal编程技术网

Java 为什么bufferreader在readLine()上返回null

Java 为什么bufferreader在readLine()上返回null,java,android,Java,Android,我正在从InputStreamReader创建一个BufferReader,它从Web服务加载响应,如下所示: HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection(); try { InputStream in = c.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in));

我正在从
InputStreamReader
创建一个
BufferReader
,它从Web服务加载响应,如下所示:

HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
try {
    InputStream in = c.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));

    // returns null
    String line = reader.readLine();

    // correctly instantiates Article object
    Article article = new Gson().fromJson(reader, Article.class); 

然而,出于某种原因,
reader.readLine()
返回
null
,尽管数据成功地来自服务器-我知道这一点,因为Article对象是从返回的JSON正确实例化的。返回
null
的原因是什么?

Hm,这很奇怪。。。当我这样做时,它对我来说非常好:

File file = new File("plugin.yml");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;

while((line = reader.readLine()) != null) {
    System.out.println(line);
}

reader.close();
我知道,你说过你已经用System.out.println(stuff)测试了所有东西,但我仍然会问一些最基本的问题,也许问题就隐藏在那里: 它甚至输入了方法吗? 文件拼写是否正确(也是从您将日志添加到日志的位置)? 如果你用扫描仪读取文件,它能工作吗

Scanner scan = new Scanner(file);
String line;

while(scan.hasNextLine()) {
    line = scan.nextLine();
    //...
}

scan.close();

这些可能都是愚蠢的问题,但可能会有所帮助。至于现在,我看不出您的代码中有任何问题。

我假设您没有将连接输出设置为true。 此外,我会这样做:

try {
  URL url = new URL("http://im-an-url.com");
  HttpURLConnection c = (HttpURLConnection) url.openConnection();
  c.setDoOutput(true);
  OutputStreamWriter wr = new OutputStreamWriter(c.getOutputStream());
  //do whatever you like here with the StreamWriter
  wr.close()
}

如果使用readLine方法,请确保网络流具有结束标记\r\n,或者可以使用BufferOutputStream,因为它到达了流的结尾。但是如果它是第一条
readLine
语句,这怎么可能呢?这是否意味着没有任何东西来自服务器?是的,这是一种可能性。但接下来这个
Article-Article=new-Gson().fromJson(reader,Article.class)
不应该正确实例化
文章
对象,对吗?您是如何定义Url的?谢谢,但您是从文件中读取的,我是从webservice@Maximus确切地这表明服务器的响应有问题。您可以尝试使用扫描仪并实现您的逻辑。这对我来说是个好办法。试试看。谢谢,
c.connect();如果(c.getResponseCode()==200){Log.d(“测试”,“已建立”);
输出
已建立
。您能否澄清这一点?如果您使用readLine方法,请确保网络流有结束标记\r\n,或者您可以使用BufferOutputStream?
HttpURLConnection c = (HttpURLConnection) new URL(url).openConnection();
try {
c.connect();
if (c.getResponseCode == 200) {


InputStream in = c.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));

// returns null
String line = reader.readLine();

// correctly instantiates Article object
Article article = new Gson().fromJson(reader, Article.class); 
 }