All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.codecraft.webmagic.Request Maven / Gradle / Ivy

The newest version!
package us.codecraft.webmagic;

import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import us.codecraft.webmagic.downloader.Downloader;
import us.codecraft.webmagic.model.HttpRequestBody;
import us.codecraft.webmagic.utils.Experimental;

/**
 * Object contains url to crawl.
* It contains some additional information.
* * @author [email protected]
* @since 0.1.0 */ public class Request implements Serializable { private static final long serialVersionUID = 2062192774891352043L; public static final String CYCLE_TRIED_TIMES = "_cycle_tried_times"; private String url; private String method; private HttpRequestBody requestBody; /** * this req use this downloader */ private Downloader downloader; /** * Store additional information in extras. */ private Map extras = new HashMap<>(); /** * cookies for current url, if not set use Site's cookies */ private Map cookies = new HashMap(); private Map headers = new HashMap(); /** * Priority of the request.
* The bigger will be processed earlier.
* @see us.codecraft.webmagic.scheduler.PriorityScheduler */ private long priority; /** * When it is set to TRUE, the downloader will not try to parse response body to text. * */ private boolean binaryContent = false; private String charset; public Request() { } public Request(String url) { this.url = url; } public long getPriority() { return priority; } /** * Set the priority of request for sorting.
* Need a scheduler supporting priority.
* @see us.codecraft.webmagic.scheduler.PriorityScheduler * * @param priority priority * @return this */ @Experimental public Request setPriority(long priority) { this.priority = priority; return this; } @SuppressWarnings("unchecked") public T getExtra(String key) { if (extras == null) { return null; } return (T) extras.get(key); } public Request putExtra(String key, T value) { extras.put(key, value); return this; } public String getUrl() { return url; } public Map getExtras() { return Collections.unmodifiableMap(extras); } public Request setExtras(Map extras) { this.extras.putAll(extras); return this; } public Request setUrl(String url) { this.url = url; return this; } /** * The http method of the request. Get for default. * @return httpMethod * @see us.codecraft.webmagic.utils.HttpConstant.Method * @since 0.5.0 */ public String getMethod() { return method; } public Request setMethod(String method) { this.method = method; return this; } @Override public int hashCode() { int result = url != null ? url.hashCode() : 0; result = 31 * result + (method != null ? method.hashCode() : 0); return result; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Request request = (Request) o; if (url != null ? !url.equals(request.url) : request.url != null) return false; return method != null ? method.equals(request.method) : request.method == null; } public Request addCookie(String name, String value) { cookies.put(name, value); return this; } public Request addHeader(String name, String value) { headers.put(name, value); return this; } public Map getCookies() { return cookies; } public Map getHeaders() { return headers; } public HttpRequestBody getRequestBody() { return requestBody; } public void setRequestBody(HttpRequestBody requestBody) { this.requestBody = requestBody; } public boolean isBinaryContent() { return binaryContent; } public Downloader getDownloader() { return downloader; } public void setDownloader(Downloader downloader) { this.downloader = downloader; } public Request setBinaryContent(boolean binaryContent) { this.binaryContent = binaryContent; return this; } public String getCharset() { return charset; } public Request setCharset(String charset) { this.charset = charset; return this; } @Override public String toString() { return "Request{" + "url='" + url + '\'' + ", method='" + method + '\'' + ", extras=" + extras + ", priority=" + priority + ", headers=" + headers + ", cookies="+ cookies+ '}'; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy