@Override
	public InputStream send() {
		this.parameterMap.put("page", Integer.toString(currentPage));

		//Prepare parameters
		prepare();

		try {
			HttpURLConnection con = prepareConnection(new URL(String.format(URL_FORMAT, this.url, this.parameters)));

			String linkHeader = con.getHeaderField(LINK_HEADER);
			this.next = false;
			if(linkHeader != null) {
				for(String link : linkHeader.split(DELIMITER)) {
					Matcher matcher = Pattern.compile(PAGE_PATTERN).matcher(link);
					matcher.matches();

					if(link.contains("rel=\"next\"")) {
						this.next = true;
						currentPage = Integer.parseInt(matcher.group(1));
					}
				}
			}

			int responseCode = con.getResponseCode();
			String responseMessage = con.getResponseMessage();
			if (responseCode == HttpURLConnection.HTTP_OK
					&& responseMessage.equals("OK"))
				return con.getInputStream();

		} catch (UnknownHostException e) {
			//unable to connect
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return null;
	}