缓冲读取器突然断开连接

时间:2018-08-10 19:16:08

标签: bufferedreader resteasy

我从服务器请求了一些数据。所以,我开始了asyncrontask。 getGrup是服务器的获取请求。

     getGrup="http://192.168.56.1:8084/Server/grup/getGrupId/tarihVeSaat/"
  +grup.getGrupTarihVeSaat().getTime()+"/yoneticiId/"+grup.getYoneticiId()+";";
    new GrupOlusturRequest().execute(getGrup);
    sendUyeler="http://192.168.56.1:8084/Server/grupUyeleri/ekle";
    while(true){
        if(getGId){
            hazırlaGrupUyeleri();
            break;
        }

但是,有时br.readline()返回null,我测试了其他人rest client。它一直在工作。 try-catch没有引发异常。我不明白为什么它会返回null变量。

            url = new URL(param);
            connection=(HttpURLConnection) url.openConnection();
            connection.connect();
            connection.setReadTimeout(100);
            connection.setConnectTimeout(100);

            is=connection.getInputStream();
            br=new BufferedReader(new InputStreamReader(is,"UTF-8"));

            String satir;
            while((satir=br.readLine())!=null){
                json2=new JSONObject(satir);
            }
            status=connection.getResponseCode();

服务器端: 数据从服务器作为json发送。此方法是resteasy get方法。此方法始终适用于邮递员休息客户端。

   @GET
   @Produces(MediaType.APPLICATION_JSON)
   @Path("/getGrupId/tarihVeSaat/{tarihVeSaat}/yoneticiId/{yoneticiId}")
   public Grup getGrupId(@PathParam ("tarihVeSaat") String tarihVeSaat,@PathParam ("yoneticiId") int yoneticiId){
    Grup grup=null;
       Timestamp tarih=new Timestamp(new java.util.Date(Long.parseLong(tarihVeSaat)).getTime());
        try{
        VeritabaniIslemleri vi=new VeritabaniIslemleri();
        vi.baglan();
        grup=vi.getGrupId(TarihVeSaat.tarihZamanGoster(tarih),yoneticiId);
        vi.baglantiyiKes();
    }catch(Exception e){
        Logger.getLogger(KullaniciRestController.class.getName()).log(Level.SEVERE,null,e);
    }
    return grup;
}

1 个答案:

答案 0 :(得分:0)

根据BufferedReader.readLine()的JavaDocs,该方法应返回null的唯一原因是到达流的末尾:

  

返回:

     

包含行内容的字符串,不包含任何行终止字符;如果已到达流的末尾,则为null

如果发生超时或通信问题,您应该抛出异常。

您正在连接的Web应用程序是否可能在不刷新其输出缓冲区的情况下终止了连接?听起来问题可能在连接的另一端。