java htmlpage_Java HtmlPage.getWebResponse方法代碼示例

import com.gargoylesoftware.htmlunit.html.HtmlPage; //導入方法依賴的package包/類

public HttpResponse download(HttpRequest request, int timeout) throws DownloadException {

try {

URL url = new URL(request.getUrl());

WebRequest webRequest = new WebRequest(url);

webRequest.setHttpMethod(HttpMethod.GET);

if(request instanceof HttpPostRequest) {//post

HttpPostRequest post = (HttpPostRequest)request;

webRequest.setHttpMethod(HttpMethod.POST);

List requestParameters = new ArrayList();

for(Map.Entry entry : post.getFields().entrySet()) {

NameValuePair nvp = new NameValuePair(entry.getKey(), entry.getValue().toString());

requestParameters.add(nvp);

}

webRequest.setRequestParameters(requestParameters);

}

//header

boolean isMobile = SpiderThreadLocal.get().getEngine().isMobile();

webRequest.setAdditionalHeader("User-Agent", UserAgent.getUserAgent(isMobile));

webRequest.setAdditionalHeaders(request.getHeaders());

//proxy

HttpHost proxy = Proxys.getProxy();

if(proxy != null) {

webRequest.setProxyHost(proxy.getHostName());

webRequest.setProxyPort(proxy.getPort());

}

//timeout

this.webClient.getOptions().setTimeout(timeout);

//request,response

webClient.getPage(webRequest);

HtmlPage page = webClient.getPage(request.getUrl());

HttpResponse resp = new HttpResponse();

WebResponse webResponse = page.getWebResponse();

int status = webResponse.getStatusCode();

resp.setStatus(status);

if(status == 302 || status == 301) {

String redirectUrl = webResponse.getResponseHeaderValue("Location");

resp.setContent(UrlUtils.relative2Absolute(request.getUrl(), redirectUrl));

} else if(status == 200) {

String content = page.asXml();

resp.setContent(content);

resp.setRaw(webResponse.getContentAsStream());

String contentType = webResponse.getContentType();

resp.setContentType(contentType);

String charset = getCharset(request.getCharset(), contentType);

resp.setCharset(charset);

} else {

throw new DownloadException("ERROR : " + status);

}

return resp;

} catch(Exception ex) {

throw new DownloadException(ex);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值