我从服务器请求了一些数据。所以,我开始了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;
}
答案 0 :(得分:0)
根据BufferedReader.readLine()的JavaDocs,该方法应返回null的唯一原因是到达流的末尾:
返回:
包含行内容的字符串,不包含任何行终止字符;如果已到达流的末尾,则为null
如果发生超时或通信问题,您应该抛出异常。
您正在连接的Web应用程序是否可能在不刷新其输出缓冲区的情况下终止了连接?听起来问题可能在连接的另一端。