Attempted read from closed stream.
7836 단어 HttpClient
public static String get() throws IOException, InterruptedException {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpEntity entity = null;
try {
// httpget.
HttpGet httpget = new HttpGet("http://127.0.0.1:2333/personal-api/api/personal/signn/personss?phone=11111111&name=hxy")
httpget.setHeader("User-Agent","Mozilla/5.0");
httpget.setHeader("Content-Type","application/json");
System.out.println("executing request " + httpget.getURI());
// get .
CloseableHttpResponse response = httpclient.execute(httpget);
try {
//
entity = response.getEntity();
System.out.println("--------------------------------------");
//
System.out.println(response.getStatusLine());
if (entity != null) {
//
System.out.println("Response content length: " + entity.getContentLength());
//
System.out.println("Response content: " + EntityUtils.toString(entity)); // ,
}
System.out.println("------------------------------------");
return EntityUtils.toString(entity); //
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// ,
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
//main :
public static void main(String[] args) throws InterruptedException, IOException {
String s1 = get();
System.out.println(" : "+s1);//
}
main 메서드를 실행하면 다음 예외가 발생합니다.
java.io.IOException: Attempted read from closed stream.
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:165)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.Reader.read(Reader.java:140)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:225)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:306)
at cc.huluwa.windowmain.config.TestHttpClients.get(TestHttpClients.java:105)
at cc.huluwa.windowmain.config.TestHttpClients.main(TestHttpClients.java:73)
EntityUtils 때문에 오류가 발생했습니다.toString(entity);이 문장은 뒤에 쓰기 파일 오류를 초래했다.entity에서 얻은 흐름은 중복 읽을 수 없습니다. 즉, 얻은 것을 실체로 한 번에 소모할 수 있고 여러 번 읽을 수 없기 때문에 Entity Utils를 실행합니다.string (entity) 후, 흐름이 닫혀서, 뒤의 읽기와 쓰기 오류가 발생합니다.해결 방법: System.out.println(“Response content: ” + EntityUtils.toString(entity));이 말은 주석을 달고 콘솔에 인쇄하지 마라
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【httpclient】에서의 요구로부터 controller까지의 흐름에 대해서 확인과 리팩토링이전에는 JQuery의 autocomplete, ajax 및 httpclient를 사용하여 자동 완성을 구현했지만 내용에 대해 희미하게만 파악할 수 없었습니다. 리팩토링을 실시하면서 내용을 확인한다. 우선, 외부 A...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.