簡體   English   中英

使用apache-httpClient,getResponseBodyAsStream結果不一樣

[英]use apache-httpClient, getResponseBodyAsStream result is not the same

我使用httpClient3.1。 我認為雖然length buffer.length然后a.txt包含所有內容。 但這不是。 使用getMethod.getResponseBodyAsStream之前,使用getMethod.getResponseBodyAsString.everythinggetMethod.getResponseBodyAsString.everything都很好。 例如

public static void testGetResponseBodyAsStream() throws HttpException, IOException{
                /*test stackoverflow.com*/
        String uri="http://www.stackoverflow.com";
                /*uses httpClient 3.1*/
        HttpClient httpClient=new HttpClient();
        GetMethod getMethod=new GetMethod(uri);
        httpClient.executeMethod(getMethod);
                /*get result write file */
        FileOutputStream fileOutputStream=new FileOutputStream(new File("c:/a.txt"));
                /*buffer is Large enough*/ 
        byte[] buffer=new byte[1024*1024];
        BufferedInputStream bufferedInputStream=new BufferedInputStream(getMethod.getResponseBodyAsStream());
                /*While  length<buffer.length then a.txt  contains all of   
                content.But it's no.  
                Before uses getMethod.getResponseBodyAsStream, uses                         
                getMethod.getResponseBodyAsString.everything is good . */     
        int length=bufferedInputStream.read(buffer,0,buffer.length);
        fileOutputStream.write(buffer, 0, buffer.length);
        fileOutputStream.close();
    }

嘗試此操作,看來您可能未調用某些所需的方法:

String url = "https://login.yahoo.com";
String _strGetRspBody;
String _strPostRspBody;
int port = 443;
HttpClient httpClient = new HttpClient(new MultiThreadedHttpConnectionManager());
httpClient.getHostConfiguration().setHost(url, port, "https");
GetMethod authget = new GetMethod(url);
try {
    httpClient.executeMethod(authget);
} catch (IOException i) {
    logger.error(i.toString());
}
InputStream d = authget.getResponseBodyAsStream();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM