private TrackerResponse sendEvent( long uploadedBytes, long downloadedBytes, long bytesLeftToDownload, String event) throws IOException, TrackerCommunicationException { GetMethod method = new GetMethod(announceUrl.getFile()); method.setRequestHeader("User-Agent", "BlackBits/0.1"); StringBuffer queryString = new StringBuffer(announceUrl.getQuery() == null ? "" : announceUrl.getQuery()); queryString.append("info_hash=" + URLUtils.encode(infoHash.getBytes())); queryString.append("&peer_id=" + URLUtils.encode(localPeer.getId())); queryString.append("&port=" + localPeer.getPort()); queryString.append("&uploaded=" + uploadedBytes); queryString.append("&downloaded=" + downloadedBytes); queryString.append("&left=" + bytesLeftToDownload); if (event != null) { queryString.append("&event=" + event); } if (localPeer.getAddress() != null) { queryString.append("&ip=" + localPeer.getAddress()); } method.setQueryString(queryString.toString()); httpClient.executeMethod(method); return decodeResponse(method); }