Commit 95d3802e authored by yihua.huang's avatar yihua.huang

add formdata support for post request #108

parent f49bb877
...@@ -3,6 +3,7 @@ package us.codecraft.webmagic.downloader; ...@@ -3,6 +3,7 @@ package us.codecraft.webmagic.downloader;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse; import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.annotation.ThreadSafe; import org.apache.http.annotation.ThreadSafe;
import org.apache.http.client.config.CookieSpecs; import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
...@@ -124,7 +125,7 @@ public class HttpClientDownloader extends AbstractDownloader { ...@@ -124,7 +125,7 @@ public class HttpClientDownloader extends AbstractDownloader {
} }
protected HttpUriRequest getHttpUriRequest(Request request, Site site, Map<String, String> headers) { protected HttpUriRequest getHttpUriRequest(Request request, Site site, Map<String, String> headers) {
RequestBuilder requestBuilder = selectRequestMethod(request.getMethod()).setUri(request.getUrl()); RequestBuilder requestBuilder = selectRequestMethod(request).setUri(request.getUrl());
if (headers != null) { if (headers != null) {
for (Map.Entry<String, String> headerEntry : headers.entrySet()) { for (Map.Entry<String, String> headerEntry : headers.entrySet()) {
requestBuilder.addHeader(headerEntry.getKey(), headerEntry.getValue()); requestBuilder.addHeader(headerEntry.getKey(), headerEntry.getValue());
...@@ -142,12 +143,18 @@ public class HttpClientDownloader extends AbstractDownloader { ...@@ -142,12 +143,18 @@ public class HttpClientDownloader extends AbstractDownloader {
return requestBuilder.build(); return requestBuilder.build();
} }
protected RequestBuilder selectRequestMethod(String method) { protected RequestBuilder selectRequestMethod(Request request) {
String method = request.getMethod();
if (method == null || method.equalsIgnoreCase(HttpConstant.Method.GET)) { if (method == null || method.equalsIgnoreCase(HttpConstant.Method.GET)) {
//default get //default get
return RequestBuilder.get(); return RequestBuilder.get();
} else if (method.equalsIgnoreCase(HttpConstant.Method.POST)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.POST)) {
return RequestBuilder.post(); RequestBuilder requestBuilder = RequestBuilder.post();
NameValuePair[] nameValuePair = (NameValuePair[]) request.getExtra("nameValuePair");
if (nameValuePair.length > 0) {
requestBuilder.addParameters(nameValuePair);
}
return requestBuilder;
} else if (method.equalsIgnoreCase(HttpConstant.Method.HEAD)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.HEAD)) {
return RequestBuilder.head(); return RequestBuilder.head();
} else if (method.equalsIgnoreCase(HttpConstant.Method.PUT)) { } else if (method.equalsIgnoreCase(HttpConstant.Method.PUT)) {
......
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