HttpGet getRequest=new HttpGet("/rest/auth/1/session/");
getRequest.setHeaders(headers);
HttpHost target = new HttpHost("localhost", 8080, "http");
HttpPost postRequest = new HttpPost("/rest/auth/1/session/");
System.out.println("executing request to "+target +getRequest);
HttpResponse httpResponse = httpclient.execute(target,postRequest);
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
System.out.println(EntityUtils.toString(entity));
}
the response from servers is in Json format is stored in httpresponse and we get the entity and put it in httpentity
File fJsonFile = new File("C:\\Users\\Ashish\\Desktop\\filename.json");
try {
// if file doesnt exists, then create it
if (!fJsonFile.exists()) {
fJsonFile.createNewFile();
}
FileWriter fw = new FileWriter(fJsonFile.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(EntityUtils.toString(entity));
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
Output of EntityUtils.toString(entity) is in JSON format
{"self":"http://localhost:8080/rest/api/latest/user?username=vgupta","name":"vgupta","loginInfo":{"loginCount":55,"previousLoginTime":"2014-12-01T11:39:43.883+0530"}}
and following exception at line bw.write(EntityUtils.toString(entity));
java.io.IOException: Stream closed
at java.util.zip.GZIPInputStream.ensureOpen(Unknown Source)
at java.util.zip.GZIPInputStream.read(Unknown Source)
at org.apache.http.client.entity.LazyDecompressingInputStream.read(LazyDecompressingInputStream.java:74)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.Reader.read(Unknown Source)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:244)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:288)
at jira.JiraGetPostDeleteReq.main(JiraGetPostDeleteReq.java:68)
how to get rid of this error.
If I want to write JSON in a file.
This doesn't seem to be specified in the javadoc, but
EntityUtils.toString(HttpEntity)closes theHttpEntity'sInputStream. Since you're invoking the method twice with the sameHttpEntity, the second time it is already closed.Instead of invoking it twice, store the result
and reuse
contenteverywhere else.