Commit e7d35c48 authored by yihua.huang's avatar yihua.huang

add params to all method of request #447

parent 75bad591
...@@ -115,14 +115,18 @@ public class Request implements Serializable { ...@@ -115,14 +115,18 @@ public class Request implements Serializable {
return params; return params;
} }
/** /**
* POST/GET参数设置 * set params for request
* <br>
* DO NOT set this for request already has params, like 'https://github.com/search?q=webmagic'
* @param params params * @param params params
* */ * */
public void setParams(Map<String, String> params) { public void setParams(Map<String, String> params) {
this.params = params; this.params = params;
} }
/** /**
* POST/GET参数设置 * set params for request
* <br>
* DO NOT set this for request already has params, like 'https://github.com/search?q=webmagic'
* @param key key * @param key key
* @param value value * @param value value
* */ * */
......
...@@ -162,13 +162,7 @@ public class HttpClientDownloader extends AbstractDownloader { ...@@ -162,13 +162,7 @@ public class HttpClientDownloader extends AbstractDownloader {
String method = request.getMethod(); String method = request.getMethod();
if (method == null || method.equalsIgnoreCase(HttpConstant.Method.GET)) { if (method == null || method.equalsIgnoreCase(HttpConstant.Method.GET)) {
//default get //default get
RequestBuilder requestBuilder=RequestBuilder.get(); return addParams(RequestBuilder.get(),request.getParams());
if (request.getParams() != null) {
for (Map.Entry<String, String> entry : request.getParams().entrySet()) {
requestBuilder.addParameter(entry.getKey(), entry.getValue());
}
}
return requestBuilder;
} else if (method.equalsIgnoreCase(HttpConstant.Method.POST)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.POST)) {
RequestBuilder requestBuilder = RequestBuilder.post(); RequestBuilder requestBuilder = RequestBuilder.post();
NameValuePair[] nameValuePair = (NameValuePair[]) request.getExtra("nameValuePair"); NameValuePair[] nameValuePair = (NameValuePair[]) request.getExtra("nameValuePair");
...@@ -184,17 +178,26 @@ public class HttpClientDownloader extends AbstractDownloader { ...@@ -184,17 +178,26 @@ public class HttpClientDownloader extends AbstractDownloader {
requestBuilder.setEntity(new UrlEncodedFormEntity(allNameValuePair, Charset.forName("utf8"))); requestBuilder.setEntity(new UrlEncodedFormEntity(allNameValuePair, Charset.forName("utf8")));
return requestBuilder; return requestBuilder;
} else if (method.equalsIgnoreCase(HttpConstant.Method.HEAD)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.HEAD)) {
return RequestBuilder.head(); return addParams(RequestBuilder.head(),request.getParams());
} else if (method.equalsIgnoreCase(HttpConstant.Method.PUT)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.PUT)) {
return RequestBuilder.put(); return addParams(RequestBuilder.put(),request.getParams());
} else if (method.equalsIgnoreCase(HttpConstant.Method.DELETE)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.DELETE)) {
return RequestBuilder.delete(); return addParams(RequestBuilder.delete(),request.getParams());
} else if (method.equalsIgnoreCase(HttpConstant.Method.TRACE)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.TRACE)) {
return RequestBuilder.trace(); return addParams(RequestBuilder.trace(),request.getParams());
} }
throw new IllegalArgumentException("Illegal HTTP Method " + method); throw new IllegalArgumentException("Illegal HTTP Method " + method);
} }
private RequestBuilder addParams(RequestBuilder requestBuilder, Map<String, String> params) {
if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
requestBuilder.addParameter(entry.getKey(), entry.getValue());
}
}
return requestBuilder;
}
protected Page handleResponse(Request request, String charset, HttpResponse httpResponse, Task task) throws IOException { protected Page handleResponse(Request request, String charset, HttpResponse httpResponse, Task task) throws IOException {
String content = getContent(charset, httpResponse); String content = getContent(charset, httpResponse);
Page page = new Page(); Page page = new Page();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment