private HttpClient login(PostMethod method) throws Exception { if (method.getHostConfiguration().getProtocol() == null) { throw new Exception("Protocol not specified"); } HttpClient client = getHttpClient(); client .getState() .setCredentials( AuthScope.ANY, new UsernamePasswordCredentials(getUsername(), getPassword())); configureHttpMethod(method); method.addParameter("login", getUsername()); method.addParameter("password", getPassword()); client.getParams().setContentCharset("UTF-8"); client.executeMethod(method); if (method.getStatusCode() != 200) { throw new Exception("Cannot login: HTTP status code " + method.getStatusCode()); } String response = method.getResponseBodyAsString(1000); if (response == null) { throw new NullPointerException(); } if (!response.contains("<login>ok</login>")) { int pos = response.indexOf("</error>"); int length = "<error>".length(); if (pos > length) { response = response.substring(length, pos); } throw new Exception("Cannot login: " + response); } return client; }
public synchronized void updateHtmlEntry(String key, String html) throws HttpException { HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(catalogDbURL + "update"); System.err.println(key); postMethod.addParameter("key", key); postMethod.addParameter("columns", html); try { httpClient.executeMethod(postMethod); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (postMethod.getStatusCode() == HttpStatus.SC_OK) { try { String resp = postMethod.getResponseBodyAsString(); System.err.println(resp); } catch (IOException e) { e.printStackTrace(); } } else { throw new HttpException("failed to post form."); } }
public FormValidation validate() throws IOException { HttpClient hc = createClient(); PostMethod post = new PostMethod(url + "Login"); post.addParameter("userName", getUsername()); if (getPassword() != null) { // post.addParameter("password",getPassword()); post.addParameter("password", getPassword().getPlainText()); } else { post.addParameter("password", ""); } hc.executeMethod(post); // if the login succeeds, we'll see a redirect Header loc = post.getResponseHeader("Location"); if (loc != null && loc.getValue().endsWith("/Central")) return FormValidation.ok("Success!"); if (!post.getResponseBodyAsString().contains("SOASTA")) return FormValidation.error(getUrl() + " doesn't look like a CloudTest server"); // if it fails, the server responds with 200! return FormValidation.error("Invalid credentials."); }
private PostMethod getLoginMethodFor4x() { String url = getUrl() + "/rest/gadget/1.0/login"; PostMethod postMethod = new PostMethod(url); postMethod.addParameter("os_username", getUsername()); postMethod.addParameter("os_password", getPassword()); postMethod.addParameter("os_destination", "/success"); configureHttpMethod(postMethod); return postMethod; }
public AccessTokenInfo getAccessToken(String username, String password, String appInstanceId) throws AccessTokenException { SSLContext ctx; String response = ""; try { ctx = SSLContext.getInstance("TLS"); ctx.init( new KeyManager[0], new TrustManager[] {new DefaultTrustManager()}, new SecureRandom()); SSLContext.setDefault(ctx); URL url = new URL(tokenURL); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setHostnameVerifier( new HostnameVerifier() { @Override public boolean verify(String arg0, SSLSession arg1) { return true; } }); // System.out.println(conn.getResponseCode()); conn.disconnect(); HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(tokenURL); postMethod.addParameter(new NameValuePair("grant_type", grantType)); postMethod.addParameter(new NameValuePair("username", username)); postMethod.addParameter(new NameValuePair("password", password)); postMethod.addParameter(new NameValuePair("scope", scope + appInstanceId)); postMethod.addRequestHeader("Authorization", "Basic " + appToken); postMethod.addRequestHeader("Content-Type", "application/x-www-form-urlencoded"); httpClient.executeMethod(postMethod); response = postMethod.getResponseBodyAsString(); log.info(response); JSONObject jsonObject = new JSONObject(response); AccessTokenInfo accessTokenInfo = new AccessTokenInfo(); accessTokenInfo.setAccess_token(jsonObject.getString("access_token")); accessTokenInfo.setRefresh_token(jsonObject.getString("refresh_token")); accessTokenInfo.setExpires_in(jsonObject.getInt("expires_in")); accessTokenInfo.setToken_type(jsonObject.getString("token_type")); return accessTokenInfo; } catch (NoSuchAlgorithmException | KeyManagementException | IOException | JSONException e) { log.error(e.getMessage()); throw new AccessTokenException("Configuration Error for Access Token Generation"); } catch (NullPointerException e) { return null; } }
/** Test if setParameter overwrites existing parameter values. */ public void testAddParameterFollowedBySetParameter() throws Exception { PostMethod method = new PostMethod("/"); method.addParameter("param", "a"); method.addParameter("param", "b"); method.addParameter("param", "c"); assertEquals("param=a¶m=b¶m=c", getRequestAsString(method.getRequestEntity())); method.setParameter("param", "a"); assertEquals("param=a", getRequestAsString(method.getRequestEntity())); }
@Override public long setTargetVersion(PublishingTargetItem target, long newVersion, String site) { long resoponseVersion = -1; if (target.getVersionUrl() != null && !target.getVersionUrl().isEmpty()) { LOGGER.debug("Set deployment agent version for target {0}", target.getName()); URL versionUrl = null; try { versionUrl = new URL(target.getVersionUrl()); } catch (MalformedURLException e) { LOGGER.error("Invalid set version URL for target [%s]", target.getName()); return resoponseVersion; } PostMethod postMethod = null; HttpClient client = null; try { postMethod = new PostMethod(target.getVersionUrl()); postMethod.addParameter(TARGET_REQUEST_PARAMETER, target.getTarget()); postMethod.addParameter(VERSION_REQUEST_PARAMETER, String.valueOf(newVersion)); String siteId = target.getSiteId(); if (StringUtils.isEmpty(siteId)) { siteId = site; } postMethod.addParameter(SITE_REQUEST_PARAMETER, site); client = new HttpClient(); int status = client.executeMethod(postMethod); if (status == HttpStatus.SC_OK) { String responseText = postMethod.getResponseBodyAsString(); if (responseText != null && !responseText.isEmpty()) { resoponseVersion = Long.parseLong(responseText); } else { resoponseVersion = 0; } } } catch (Exception e) { LOGGER.error( "Target {0} responded with error while setting target version. Set version failed for url {1}", target.getName(), target.getVersionUrl()); } finally { if (client != null) { HttpConnectionManager mgr = client.getHttpConnectionManager(); if (mgr instanceof SimpleHttpConnectionManager) { ((SimpleHttpConnectionManager) mgr).shutdown(); } } if (postMethod != null) { postMethod.releaseConnection(); } postMethod = null; client = null; } } return resoponseVersion; }
public void registerMessagingServiceScopes(String consumerKey, String scope) throws Exception { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(ConsumerScopesRegistrationURL); Base64 base64 = new Base64(); String base64Credentials = new String(base64.encode("admin:admin".getBytes())); method.addRequestHeader(new Header("Authorization", "Basic " + base64Credentials)); method.addParameter(OAuth.OAUTH_CONSUMER_KEY, consumerKey); method.addParameter("xoauth_scope", scope); method.addParameter("xoauth_permission", "sendMessages"); int status = client.executeMethod(method); if (HttpResponseCodes.SC_OK != status) { throw new RuntimeException("Scopes can not be registered"); } }
// TODO : the subscriber may need to provide some form of id known // to the message receiver so that the receiver can validate that it was indeed // the subscriber who asked the service to push the messages; // however, the consumerId creates by the subscriber can be enough; // Question : what about refresh tokens ? public void registerMessagingServiceCallback( String consumerKey, String consumerSecret, String callback) throws Exception { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(MessagingServiceCallbackRegistrationURL); Base64 base64 = new Base64(); String base64Credentials = new String(base64.encode("admin:admin".getBytes())); method.addRequestHeader(new Header("Authorization", "Basic " + base64Credentials)); method.addParameter("consumer_id", consumerKey); method.addParameter("consumer_secret", consumerSecret); method.addParameter("callback_uri", callback); int status = client.executeMethod(method); if (HttpResponseCodes.SC_OK != status) { throw new RuntimeException("Callback Registration failed"); } }
private PostMethod convertHttpServletRequestToPostMethod(String url, HttpServletRequest request) { PostMethod postMethod = new PostMethod(url); for (Enumeration headers = request.getHeaderNames(); headers.hasMoreElements(); ) { String headerName = (String) headers.nextElement(); String headerValue = (String) request.getHeader(headerName); postMethod.addRequestHeader(headerName, headerValue); } postMethod.removeRequestHeader("Host"); postMethod.addRequestHeader("Host", request.getRequestURL().toString()); for (Enumeration names = request.getParameterNames(); names.hasMoreElements(); ) { String paramName = (String) names.nextElement(); String paramValue = (String) request.getParameter(paramName); postMethod.addParameter(paramName, paramValue); } StringBuilder requestBody = new StringBuilder(); try { BufferedReader reader = request.getReader(); String line; while (null != (line = reader.readLine())) { requestBody.append(line); } reader.close(); } catch (IOException e) { requestBody.append(""); } postMethod.setRequestEntity(new StringRequestEntity(requestBody.toString())); return postMethod; }
@Action("SignModeCheck") public String signModeCheck() throws Exception { try { HttpClient client = new HttpClient(); String url = "http://127.0.0.1:" + getServerPort() + "/service/"; logger.debug("url: " + url); CommunicationVo requestVo = new CommunicationVo(); requestVo.setTradeCode("000001"); requestVo.putParam("signMode", this.signVo.getSignMode()); requestVo.putParam("certDn", this.signVo.getCertDn()); PostMethod postMethod = new PostMethod(url); postMethod.addParameter("json", requestVo.toJson()); client.executeMethod(postMethod); String resp = postMethod.getResponseBodyAsString().trim(); postMethod.releaseConnection(); logger.info("resp: " + resp); CommunicationVo respVo = CommunicationVo.getInstancefromJson(resp); if (!"0000".equals(respVo.getStatus())) { throw new ServiceException(respVo.getMessage()); } this.dwzResp.ajaxSuccessForward(respVo.getMessage()); this.dwzResp.setAlertClose(Boolean.valueOf(false)); } catch (Exception e) { logger.error(ExceptionUtils.getStackTrace(e)); this.dwzResp.errorForward(e.getMessage()); return "dwz"; } return "dwz"; }
public String jasperAuthen(String username, String password) throws HttpException, IOException { logger.info("Authenticate : Jasper Report Server"); Header[] headers = null; String sessionCookie = ""; this.httpClient = new HttpClient(); PostMethod mPost = new PostMethod(restLoginUrl); Header mtHeader = new Header(); mtHeader.setName("content-type"); mtHeader.setValue("application/x-www-form-urlencoded"); mtHeader.setName("accept"); mPost.addParameter("j_username", username); mPost.addParameter("j_password", password); mPost.addRequestHeader(mtHeader); httpClient.executeMethod(mPost); headers = mPost.getResponseHeaders(); mPost.releaseConnection(); sessionCookie = headers[2].getValue(); logger.debug("SessionCookie is {}", sessionCookie); return sessionCookie; }
/** * post * * @param url * @param params * @param token * @return * @throws ApiException */ public static String post(String url, PostParameter[] params, String token) throws IOException { PostMethod postMethod = new PostMethod(url); for (int i = 0; i < params.length; i++) { postMethod.addParameter(params[i].getName(), params[i].getValue()); } HttpMethodParams param = postMethod.getParams(); param.setContentCharset(DEFAULTCHAESET); return httpRequest(postMethod, token); }
/** Test the return value of the PostMethod#removeParameter. */ public void testRemoveParameterReturnValue() throws Exception { PostMethod method = new PostMethod("/"); method.addParameter("param", "whatever"); assertTrue( "Return value of the method is expected to be true", method.removeParameter("param")); assertFalse( "Return value of the method is expected to be false", method.removeParameter("param")); }
private void httpDeleteProject(String url, ExtractionProject eProject) throws Exception { PostMethod method = null; try { HttpClient client = new HttpClient(); client.getParams().setParameter("http.connection.timeout", new Integer(8000)); method = new PostMethod(url); method.addParameter("PROJECT_ID", eProject.getIdProyecto()); method.addParameter("PROJECT_NAME", eProject.getNombreProyecto()); int statusCode1 = client.executeMethod(method); logger.info("statusLine>>> " + method.getStatusLine() + " || statusCode>>> " + statusCode1); } catch (Exception e) { logger.error("No se ha podido eliminar el proyecto. " + e, e); throw e; } finally { if (method != null) method.releaseConnection(); } }
public static void main(String[] args) { Date now; now = new Date(); System.out.println("Time is :" + now); // Create Repetitively task for every 1 secs HttpClient client = null; PostMethod method = null; JSONObject joResponse = null; try { client = new HttpClient(); // method = new PostMethod("http://23.23.129.228/getLocations.php"); method = new PostMethod("http://54.235.163.80/getLocations.php"); method.addParameter("f", "json"); method.setRequestHeader("Connection", "close"); int statusCode = client.executeMethod(method); System.out.println(statusCode); String responseStream = method.getResponseBodyAsString(); HashSet<String> activeLocations = new HashSet<String>(); if (statusCode == HttpURLConnection.HTTP_OK && responseStream.trim().startsWith("{") && responseStream.trim().endsWith("}")) { StringBuilder keyStrbuildr = new StringBuilder(); joResponse = JSONObject.fromObject(responseStream); // JSONObject locationresp = (JSONObject) joResponse.get("data"); System.out.println(joResponse.getString("data")); System.out.println(!joResponse.getString("data").equals("[]")); /*System.out.println(locationresp); for (Object key: locationresp.keySet()) { String keyStr = (String) key; activeLocations.add(keyStr.split(":")[0]); keyStrbuildr.append("'") .append(keyStr.split(":")[0]) .append("',"); } System.out.println(keyStrbuildr);*/ } else { System.out.println("no response from the wpt server"); } } catch (Exception e) { System.out.println(e); } }
/** Test that parameters can be added and removed. */ public void testAddRemoveParametersToParamServlet() throws Exception { PostMethod method = new PostMethod("/"); method.addParameter(new NameValuePair("pname0", "pvalue0")); method.addParameter(new NameValuePair("pname1", "pvalue1")); method.addParameter(new NameValuePair("pname2", "pvalue2")); method.addParameter(new NameValuePair("pname3", "pvalue3")); method.removeParameter("pname0"); method.removeParameter("pname3"); this.server.setHttpService(new EchoService()); try { this.client.executeMethod(method); assertEquals(200, method.getStatusCode()); String body = method.getResponseBodyAsString(); assertEquals("pname1=pvalue1&pname2=pvalue2", body); } finally { method.releaseConnection(); } }
private HttpMethod getPostMethod(BlogQueryParameter param) { PostMethod method = new PostMethod(param.getMethodUrl()); // Set the parameters Collection<QueryParameter> paramColl = param.getAllParameters(); for (QueryParameter qp : paramColl) { String key = getParamStringMap().get(qp); if (key != null) { method.addParameter(key, param.getParameter(qp)); } } return method; }
public Response post(String url, PostParameter[] params, Boolean WithTokenHeader, String token) throws WeiboException { log("Request:"); log("POST" + url); PostMethod postMethod = new PostMethod(url); for (int i = 0; i < params.length; i++) { postMethod.addParameter(params[i].getName(), params[i].getValue()); } HttpMethodParams param = postMethod.getParams(); param.setContentCharset("UTF-8"); return httpRequest(postMethod, WithTokenHeader, token); }
private String sendRequest(TicketsRequest request) throws HttpException, IOException { String html = ""; GetMethod get = new GetMethod(url2); client.executeMethod(get); int statusCodeInit = client.executeMethod(get); if (statusCodeInit != HttpStatus.SC_OK) { logger.error("sendRequest method failed. Get method failed: " + get.getStatusLine()); return null; } else { html = IOUtils.toString(get.getResponseBodyAsStream(), "UTF-8"); } parseToken(html); client.getHttpConnectionManager().getParams().setSoTimeout(10000); PostMethod post = new PostMethod(URL); post.addRequestHeader("Accept", "*/*"); post.addRequestHeader("Accept-Encoding", "gzip, deflate"); post.addRequestHeader("Accept-Language", "uk,ru;q=0.8,en-US;q=0.5,en;q=0.3"); // post.addRequestHeader("Cache-Control", "no-cache"); post.addRequestHeader("Connection", "keep-alive"); // post.addRequestHeader("Content-Length", "288"); //202. 196 post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); post.addRequestHeader("GV-Ajax", "1"); post.addRequestHeader("GV-Referer", "http://booking.uz.gov.ua/"); post.addRequestHeader("GV-Screen", "1920x1080"); post.addRequestHeader("GV-Token", token); post.addRequestHeader("GV-Unique-Host", "1"); post.addRequestHeader("Host", "booking.uz.gov.ua"); // post.addRequestHeader("Pragma", "no-cache"); post.addRequestHeader("Origin", "http://booking.uz.gov.ua"); post.addRequestHeader("Referer", "http://booking.uz.gov.ua/"); post.addRequestHeader( "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/39.0"); post.addParameter("another_ec", "0"); post.addParameter("date_dep", new SimpleDateFormat("dd.MM.yyyy").format(request.date)); post.addParameter("search", ""); post.addParameter("station_from", request.from.getName()); post.addParameter("station_id_from", request.from.getStationId()); post.addParameter("station_id_till", request.till.getStationId()); post.addParameter("station_till", request.till.getName()); post.addParameter("time_dep", "00:00"); post.addParameter("time_dep_till", ""); int statusCode = client.executeMethod(post); if (statusCode != HttpStatus.SC_OK) { logger.error("sendRequest method failed. Post method failed: " + post.getStatusLine()); return null; } return post.getResponseBodyAsString(); }
@Override public Result post(HttpUrl url, String encoding, String cookie, Map<String, String> headers) { String realUrl = url.getRenderedUrl(); PostMethod method = new PostMethod(realUrl); if (url.getQueryParam() != null) { for (Entry<String, String> entry : url.getQueryParam().entrySet()) { method.addParameter(new NameValuePair(entry.getKey(), entry.getValue())); } } Result result = excuteMethod(method, cookie, headers); result.setResultEncoding(encoding); return result; }
public String registerMessagingService(String consumerKey) throws Exception { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(ConsumerRegistrationURL); Base64 base64 = new Base64(); String base64Credentials = new String(base64.encode("admin:admin".getBytes())); method.addRequestHeader(new Header("Authorization", "Basic " + base64Credentials)); method.addParameter(OAuth.OAUTH_CONSUMER_KEY, consumerKey); int status = client.executeMethod(method); if (HttpResponseCodes.SC_OK != status) { throw new RuntimeException("Registration failed"); } // check that we got all tokens Map<String, String> response = OAuth.newMap(OAuth.decodeForm(method.getResponseBodyAsString())); String secret = response.get("xoauth_consumer_secret"); if (secret == null) { throw new RuntimeException("No secret available"); } return secret; }
/** * http 통신을 한다.POST 방식 * * @param url * @param params * @return 서버에서 받은 body 스트링 */ public String execute(String url, String queryString, Map params, boolean sslExceptionIgnore) throws HttpNetAgentException { PostMethod postMethod = null; String responseBody = null; postMethod = new PostMethod(url); java.util.Iterator ith = params.keySet().iterator(); while (ith.hasNext()) { String paramName = (String) ith.next(); String paramValue = (String) params.get(paramName); postMethod.addParameter(paramName, paramValue); } postMethod.setQueryString(queryString); responseBody = send(postMethod, sslExceptionIgnore); return responseBody; }
@Action( value = "FindDnList", results = { @org.apache.struts2.convention.annotation.Result( location = "/WEB-INF/jsp/pingan/SignDnList.jsp") }) public String findDnList() { try { HttpClient client = new HttpClient(); String url = "http://127.0.0.1:" + getServerPort() + "/service/"; logger.debug("url: " + url); CommunicationVo requestVo = new CommunicationVo(); requestVo.setTradeCode("000002"); requestVo.putParam("signMode", this.signVo.getSignMode()); PostMethod postMethod = new PostMethod(url); postMethod.addParameter("json", requestVo.toJson()); client.executeMethod(postMethod); String resp = postMethod.getResponseBodyAsString().trim(); postMethod.releaseConnection(); logger.info("resp: " + resp); CommunicationVo respVo = CommunicationVo.getInstancefromJson(resp); if (!"0000".equals(respVo.getStatus())) { throw new ServiceException(respVo.getMessage()); } this.req.setAttribute("dnList", respVo.getListParam("dnList")); } catch (Exception e) { logger.error(ExceptionUtils.getStackTrace(e)); this.dwzResp.errorForward("获取证书DN列表失败"); return "dwz"; } return "success"; }
protected void processPostMethod( PostMethod postMethod, List<Http.FilePart> fileParts, Map<String, String> parts) { if ((fileParts == null) || fileParts.isEmpty()) { if (parts != null) { for (Map.Entry<String, String> entry : parts.entrySet()) { String value = entry.getValue(); if (Validator.isNotNull(value)) { postMethod.addParameter(entry.getKey(), value); } } } } else { List<Part> partsList = new ArrayList<Part>(); if (parts != null) { for (Map.Entry<String, String> entry : parts.entrySet()) { String value = entry.getValue(); if (Validator.isNotNull(value)) { StringPart stringPart = new StringPart(entry.getKey(), value); partsList.add(stringPart); } } } for (Http.FilePart filePart : fileParts) { partsList.add(toCommonsFilePart(filePart)); } MultipartRequestEntity multipartRequestEntity = new MultipartRequestEntity(partsList.toArray(new Part[0]), postMethod.getParams()); postMethod.setRequestEntity(multipartRequestEntity); } }
public void testExecuteDeviceUpdate() { String json = "{\n" + " \"client\": {\n" + " \"username\": \"00:14:49:0D:00:00\",\n" + " \"model\": \"IHO-10004K\",\n" + " \"datatype\": \"1\",\n" + " \"androidsdk\": \"19\",\n" + "\t\t\"macadress\":\"101\",\n" + " \"signtype\": \"test\",\n" + " \"testmode\": \"false\",\n" + " \"firmwareversion\": \"2.0\",\n" + " \"hardwareversion\": \"00000030\",\n" + " \"apkversion\": \"2.6\"\n" + "\t\t}\n" + "}"; HttpClientRequestImpl client = new HttpClientRequestImpl(); PostMethod method = new PostMethod(HOST + "main.html"); method.addParameter("json", json); String s = client.httpPostRequest(method); System.out.println(s); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Begin OAuth"); String accessToken = (String) request.getSession().getAttribute(ACCESS_TOKEN); if (accessToken == null) { String instanceUrl = null; if (request.getRequestURI().endsWith("oauth")) { // we need to send the user to authorize response.sendRedirect(authUrl); return; } else { System.out.println("Auth successful - got callback"); String code = request.getParameter("code"); HttpClient httpclient = new HttpClient(); PostMethod post = new PostMethod(tokenUrl); post.addParameter("code", code); post.addParameter("grant_type", "authorization_code"); /* post.addParameter("client_id", clientId); post.addParameter("client_secret", clientSecret); post.addParameter("redirect_uri", redirectUri); */ post.addParameter( "client_id", "3MVG9GiqKapCZBwEQ.zsKlrXNZsLKRIt5N6_xlGkEu..UgAJSnXmX3gVC_pbaPnEjpu.4Q9G8oNqY6xjTdqC1"); post.addParameter("client_secret", "3751930497380396254"); post.addParameter("redirect_uri", "https://cs11.salesforce.com/"); try { httpclient.executeMethod(post); try { JSONObject authResponse = new JSONObject( new JSONTokener(new InputStreamReader(post.getResponseBodyAsStream()))); System.out.println("xAuth response: " + authResponse.toString(2)); accessToken = authResponse.getString("access_token"); // Instance URL is Salesforce specific. instanceUrl = authResponse.getString("instance_url"); System.out.println("Got access token: " + accessToken); } catch (JSONException e) { e.printStackTrace(); throw new ServletException(e); } } catch (HttpException e) { e.printStackTrace(); throw new ServletException(e); } finally { post.releaseConnection(); } } // Set a session attribute so that other servlets can get the access // token request.getSession().setAttribute(ACCESS_TOKEN, accessToken); // We also get the instance URL from the OAuth response, so set it // in the session too request.getSession().setAttribute(INSTANCE_URL, instanceUrl); } response.sendRedirect(request.getContextPath() + "/index.html"); }
// 授权,生成access_token // 使用情形:①程序初始化;②每隔一天左右重新授权access_token public static void generate() { initAccountInfo(); accessToken.clear(); logger.info("用户授权中..."); try { // https://api.weibo.com/oauth2/authorize?client_id=750123511&redirect_uri=https://api.weibo.com/oauth2/default.html&response_type=code String url = "https://api.weibo.com/oauth2/authorize"; String redirectUri = "https://api.weibo.com/oauth2/default.html"; for (int i = 0; i < accountInfo.size(); i++) { // 获取应用的信息 clientId = WeiboConfig.getValue("client_ID"); clientSecret = WeiboConfig.getValue("client_SERCRET"); // 构造授权的url参数 PostMethod postMethod = new PostMethod(url); postMethod.addParameter("client_id", clientId); postMethod.addParameter("redirect_uri", redirectUri); postMethod.addParameter("userId", accountInfo.get(i).getUserId()); postMethod.addParameter("passwd", accountInfo.get(i).getPasswd()); postMethod.addParameter("isLoginSina", "0"); postMethod.addParameter("action", "submit"); postMethod.addParameter("response_type", "code"); HttpMethodParams param = postMethod.getParams(); param.setContentCharset("UTF-8"); // 伪造头部域信息 List<Header> headers = new ArrayList<Header>(); headers.add( new Header( "Referer", "https://api.weibo.com/oauth2/authorize?client_id=" + clientId + "&redirect_uri=" + redirectUri + "&from=sina&response_type=code")); headers.add(new Header("Host", "api.weibo.com")); headers.add( new Header( "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0")); // 发送HTTP请求 HttpClient client = new HttpClient(); client.getHostConfiguration().getParams().setParameter("http.default-headers", headers); client.executeMethod(postMethod); // 获取授权响应 int status = postMethod.getStatusCode(); if (status == 302) { Header location = postMethod.getResponseHeader("location"); if (location != null) { String retUrl = location.getValue(); int begin = retUrl.indexOf("code="); int end = retUrl.length(); String code = retUrl.substring(begin + 5, end); if (code != null) { Oauth oauth = new Oauth(); String token = oauth.getAccessTokenByCode(code).getAccessToken(); accessToken.add(token); logger.info("第" + (i + 1) + "个access_token:" + token); } } } else { logger.error("第" + (i + 1) + "个用户授权失败了!"); } } } catch (Exception e) { e.printStackTrace(); logger.error("授权发生异常!"); } }
public static void main(String[] args) throws Exception { /** * Use the key and secret provided when you registered your application * http://www.flickr.com/services/api/keys/apply/ */ String key = ""; String secret = ""; /** * This example assumes that you have uploaded a photo to your Flickr account. * * <p>The photo id can be found in the URL of the photo * http://flickr.com/photos/xxxxxxx@N03/<use_this_photo_id>/ */ String photoId = ""; /** * Request a frob to identify the login session. This call requires a signature. The signature * starts with your shared secret and is followed by your API key and the method name. The API * key and method name are prepended by the words "api_key" and "method" as shown in the * following line. */ String methodGetFrob = "flickr.auth.getFrob"; String sig = secret + "api_key" + key + "method" + methodGetFrob; /** The API signature must be MD5 encoded and appended to the request */ String signature = MD5(sig); String request = "http://api.flickr.com/services/rest/?method=" + methodGetFrob + "&api_key=" + key + "&api_sig=" + signature; System.out.println("GET frob request: " + request); HttpClient client = new HttpClient(); GetMethod method = new GetMethod(request); // Send GET request int statusCode = client.executeMethod(method); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + method.getStatusLine()); } InputStream rstream = null; // Get the response body rstream = method.getResponseBodyAsStream(); // Retrieve the XML response to the frob request and get the frob value. Document response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(rstream); String frob = null; // Check if frob is in the response NodeList frobResponse = response.getElementsByTagName("frob"); Node frobNode = frobResponse.item(0); if (frobNode != null) { frob = frobNode.getTextContent(); System.out.println("Successfully retrieved frob: " + frob); } else { printFlickrError(response); return; } System.out.println("Get frob XML response:"); /** * Create a Flickr login link * http://www.flickr.com/services/auth/?api_key=[api_key]&perms=[perms]&frob=[frob]&api_sig=[api_sig] * We are using "write" for the perms value because we will be rotating an image. */ sig = secret + "api_key" + key + "frob" + frob + "permswrite"; signature = MD5(sig); request = "http://www.flickr.com/services/auth/?api_key=" + key + "&perms=write&frob=" + frob + "&api_sig=" + signature; /** Copy/paste the generated link into your favorite web browser and follow the instructions */ System.out.println( "Browse to the following flickr url to authenticate yourself and then press enter."); System.out.println(request); BufferedReader infile = new BufferedReader(new InputStreamReader(System.in)); String line = infile.readLine(); /** * Get auth token using frob. Once again, a signature is required for authenticated calls to the * Flickr API. */ String methodGetToken = "flickr.auth.getToken"; sig = secret + "api_key" + key + "frob" + frob + "method" + methodGetToken; signature = MD5(sig); request = "http://api.flickr.com/services/rest/?method=" + methodGetToken + "&api_key=" + key + "&frob=" + frob + "&api_sig=" + signature; System.out.println("Token request: " + request); method = new GetMethod(request); // Send GET request statusCode = client.executeMethod(method); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + method.getStatusLine()); } rstream = null; // Get the response body rstream = method.getResponseBodyAsStream(); /** Retrieve the XML response to the token request and get the token value */ response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(rstream); String token = null; // Check if token is in the response NodeList tokenResponse = response.getElementsByTagName("token"); Node tokenNode = tokenResponse.item(0); if (tokenNode != null) { token = tokenNode.getTextContent(); System.out.println("Successfully retrieved token: " + token); } else { printFlickrError(response); return; } /** * Now that we have authenticated with Flickr and obtained an auth token with write privileges, * it's time to rotate the image. * * <p>http://api.flickr.com/services/rest/?method=flickr.photos.transform.rotate& * api_key=[api_key]&photo_id=[photo_id]°rees=180&auth_token=[auth_token]&api_sig=[api_sig] */ String methodRotate = "flickr.photos.transform.rotate"; sig = secret + "api_key" + key + "auth_token" + token + "degrees180" + "method" + methodRotate + "photo_id" + photoId; signature = MD5(sig); /** * Create POST data for rotate request. The Flickr API documentation specifies that calls to * flickr.photos.transform.rotate be made via HTTP POST. */ request = "http://api.flickr.com/services/rest/"; PostMethod pmethod = new PostMethod(request); pmethod.addParameter("method", methodRotate); pmethod.addParameter("photo_id", photoId); pmethod.addParameter("degrees", "180"); pmethod.addParameter("api_key", key); pmethod.addParameter("auth_token", token); pmethod.addParameter("api_sig", signature); // Send POST request statusCode = client.executeMethod(pmethod); if (statusCode != HttpStatus.SC_OK) { System.err.println("Method failed: " + pmethod.getStatusLine()); } rstream = null; // Get the response body rstream = pmethod.getResponseBodyAsStream(); /** Retrieve the XML response to the rotate request and get the XML response */ response = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(rstream); String photoid = null; // Check if photoid is in the response NodeList rotateResponse = response.getElementsByTagName("photoid"); Node rotateNode = rotateResponse.item(0); if (rotateNode != null) { photoid = rotateNode.getTextContent(); System.out.println("Successfully flipped photo " + photoid); System.out.println( "Refresh the photo in your web browser and you will see it has been flipped."); } else { printFlickrError(response); return; } }
public void test() throws Exception { HttpClient client = new HttpClient(); RuntimeStats rt = new RuntimeStats(); rt.songCount.set(15); rt.albumCount.set(5); rt.artistCount.set(2); rt.playlistCount.set(0); rt.userCount.set(2); rt.playtime.set(15); rt.downloaded.set(0); this.addMusicFolder(new File("src/test/resources/data").getAbsolutePath(), rt); rt.songCount.set(24); rt.albumCount.set(6); rt.artistCount.set(3); rt.playtime.set(24); this.addMusicFolder(new File("src/test/resources/data2").getAbsolutePath(), rt); // create playlist with no name: 400 PostMethod post = new PostMethod(URL + "playlist/create"); post.addRequestHeader("sessionId", user_sessionId); client.executeMethod(post); assertEquals(400, post.getStatusCode()); // create playlist 'foo' post = new PostMethod(URL + "playlist/create"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("name", "foo"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); JSONObject obj = new JSONObject(post.getResponseBodyAsString()); Playlist foo = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals("foo", foo.name); assertEquals(0, foo.songs); assertEquals(0, foo.playtime); // create playlist 'foo' again: returns the same playlist post = new PostMethod(URL + "playlist/create"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("name", "foo"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(foo, new Playlist(obj.getJSONObject("playlist").toString())); // create playlist 'foo' as admin: creates another playlist post = new PostMethod(URL + "playlist/create"); post.addRequestHeader("sessionId", admin_sessionId); post.addParameter("name", "foo"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); Playlist pl = new Playlist(obj.getJSONObject("playlist").toString()); assertNotSame(foo, pl); // playlists for user: '******' GetMethod get = new GetMethod(URL + "playlists"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals(1, obj.getJSONArray("playlists").length()); assertEquals(foo, new Playlist(obj.getJSONArray("playlists").get(0).toString())); // playlists/id for user: '******' get = new GetMethod(URL + "playlists/" + user_userId); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals(1, obj.getJSONArray("playlists").length()); assertEquals(foo, new Playlist(obj.getJSONArray("playlists").get(0).toString())); // remove playlist without argument: 400 post = new PostMethod(URL + "playlists/remove"); post.addRequestHeader("sessionId", user_sessionId); client.executeMethod(post); assertEquals(400, post.getStatusCode()); // remove admin 'foo' playlist as user: 403 post = new PostMethod(URL + "playlists/remove"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("playlist_ids[]", "" + pl.id); client.executeMethod(post); assertEquals(403, post.getStatusCode()); // remove admin 'foo' post = new PostMethod(URL + "playlists/remove"); post.addRequestHeader("sessionId", admin_sessionId); post.addParameter("playlist_ids[]", "" + pl.id); client.executeMethod(post); assertEquals(204, post.getStatusCode()); // playlists for admin: 'none' get = new GetMethod(URL + "playlists"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals(0, obj.getJSONArray("playlists").length()); // playlists/id for admin: 'none' get = new GetMethod(URL + "playlists/" + admin_userId); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals(0, obj.getJSONArray("playlists").length()); // playlist/create-add with no name : 400 post = new PostMethod(URL + "playlist/create-add"); post.addRequestHeader("sessionId", user_sessionId); client.executeMethod(post); assertEquals(400, post.getStatusCode()); // playlist/create-add 'bar' with no songs post = new PostMethod(URL + "playlist/create-add"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("name", "bar"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(0, obj.getInt("added")); Playlist bar = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals("bar", bar.name); assertEquals(0, bar.playtime); assertEquals(0, bar.songs); int[] song_ids = new int[4]; int album_id; // search for 'o': 4 songs, 1 album with 1 song get = new GetMethod(URL + "search/o"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); JSONArray songs = obj.getJSONArray("songs"); for (int i = 0; i < 4; i++) { song_ids[i] = songs.getJSONObject(i).getInt("id"); } JSONObject ok = obj.getJSONArray("albums").getJSONObject(0); album_id = ok.getInt("id"); // playlist/create-add 'bar' with songs post = new PostMethod(URL + "playlist/create-add"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("name", "bar"); post.addParameter("song_ids[]", "" + song_ids[0]); post.addParameter("song_ids[]", "" + song_ids[1]); post.addParameter("song_ids[]", "" + song_ids[2]); post.addParameter("song_ids[]", "" + song_ids[3]); post.addParameter("album_ids[]", "" + album_id); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(5, obj.getInt("added")); bar = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals("bar", bar.name); assertEquals(5, bar.playtime); assertEquals(5, bar.songs); // check song list in 'bar' get = new GetMethod(URL + "playlist/" + bar.id + "/songs"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals("bar", obj.getString("name")); JSONArray arr = obj.getJSONArray("playlist"); assertEquals(5, arr.length()); for (int i = 0; i < 4; i++) { assertEquals( new Song(songs.getJSONObject(i).toString()), new Song(arr.getJSONObject(i).toString())); } Song s5 = new Song(arr.getJSONObject(4).toString()); assertEquals("Ok", s5.album_name); // playlist/remove song as wrong user post = new PostMethod(URL + "playlist/" + bar.id + "/remove"); post.addRequestHeader("sessionId", admin_sessionId); post.addParameter("song_ids[]", "" + song_ids[0]); client.executeMethod(post); assertEquals(403, post.getStatusCode()); // playlist/remove 2 songs post = new PostMethod(URL + "playlist/" + bar.id + "/remove"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("song_ids[]", "" + song_ids[1]); post.addParameter("song_ids[]", "" + song_ids[2]); client.executeMethod(post); assertEquals(204, post.getStatusCode()); // check song list get = new GetMethod(URL + "playlist/" + bar.id + "/songs"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals("bar", obj.getString("name")); arr = obj.getJSONArray("playlist"); assertEquals(3, arr.length()); assertEquals( new Song(songs.getJSONObject(0).toString()), new Song(arr.getJSONObject(0).toString())); assertEquals( new Song(songs.getJSONObject(3).toString()), new Song(arr.getJSONObject(1).toString())); assertEquals(s5, new Song(arr.getJSONObject(2).toString())); // re-check with song/id/pos get = new GetMethod(URL + "playlist/" + bar.id + "/song/0"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()).getJSONObject("song"); assertEquals(new Song(songs.getJSONObject(0).toString()), new Song(obj.toString())); // 2nd song get = new GetMethod(URL + "playlist/" + bar.id + "/song/1"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()).getJSONObject("song"); assertEquals(new Song(songs.getJSONObject(3).toString()), new Song(obj.toString())); // 3rd song get = new GetMethod(URL + "playlist/" + bar.id + "/song/2"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()).getJSONObject("song"); assertEquals(s5, new Song(obj.toString())); // no more song in playlist get = new GetMethod(URL + "playlist/" + bar.id + "/song/3"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(404, get.getStatusCode()); // playlist/create-add 'bar' with other songs and clear post = new PostMethod(URL + "playlist/create-add"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("name", "bar"); post.addParameter("clear", "true"); post.addParameter("album_ids[]", "" + album_id); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(1, obj.getInt("added")); bar = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals("bar", bar.name); assertEquals(1, bar.playtime); assertEquals(1, bar.songs); // playlist/add as admin: 403 post = new PostMethod(URL + "playlist/" + bar.id + "/add"); post.addRequestHeader("sessionId", admin_sessionId); post.addParameter("clear", "true"); post.addParameter("song_ids", "" + s5.id); client.executeMethod(post); assertEquals(403, post.getStatusCode()); // playlist/add with duplicate songs: 400 post = new PostMethod(URL + "playlist/" + bar.id + "/add"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("clear", "true"); post.addParameter("song_ids[]", "" + song_ids[0]); post.addParameter("song_ids[]", "" + song_ids[0]); post.addParameter("album_ids[]", "" + album_id); client.executeMethod(post); assertEquals(500, post.getStatusCode()); // playlist/add a couple songs w/ clear post = new PostMethod(URL + "playlist/" + bar.id + "/add"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("clear", "true"); post.addParameter("song_ids[]", "" + song_ids[0]); post.addParameter("song_ids[]", "" + song_ids[2]); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(2, obj.getInt("added")); pl = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals(2, pl.playtime); assertEquals(2, pl.songs); assertEquals("bar", pl.name); // check song list get = new GetMethod(URL + "playlist/" + pl.id + "/songs"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals("bar", obj.getString("name")); arr = obj.getJSONArray("playlist"); assertEquals(2, arr.length()); assertEquals( new Song(songs.getJSONObject(0).toString()), new Song(arr.getJSONObject(0).toString())); assertEquals( new Song(songs.getJSONObject(2).toString()), new Song(arr.getJSONObject(1).toString())); // re-check with song/id/pos get = new GetMethod(URL + "playlist/" + pl.id + "/song/0"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()).getJSONObject("song"); assertEquals(new Song(songs.getJSONObject(0).toString()), new Song(obj.toString())); // 2nd song get = new GetMethod(URL + "playlist/" + pl.id + "/song/1"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()).getJSONObject("song"); assertEquals(new Song(songs.getJSONObject(2).toString()), new Song(obj.toString())); // no more song in playlist get = new GetMethod(URL + "playlist/" + pl.id + "/song/2"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(404, get.getStatusCode()); // random playlist with no name : 400 post = new PostMethod(URL + "playlist/random"); post.addRequestHeader("sessionId", user_sessionId); client.executeMethod(post); assertEquals(400, post.getStatusCode()); // random playlist with no song number : 400 post = new PostMethod(URL + "playlist/random"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("name", "toto"); client.executeMethod(post); assertEquals(400, post.getStatusCode()); // random playlist with too many songs: 400 post = new PostMethod(URL + "playlist/random"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("number", "60"); post.addParameter("name", "toto"); client.executeMethod(post); assertEquals(400, post.getStatusCode()); // random playlist 'toto' post = new PostMethod(URL + "playlist/random"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("number", "15"); post.addParameter("name", "toto"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(15, obj.getInt("added")); Playlist rand = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals(15, rand.playtime); assertEquals(15, rand.songs); assertEquals("toto", rand.name); // get first song get = new GetMethod(URL + "playlist/" + rand.id + "/song/0"); get.addRequestHeader("sessionId", admin_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); Song s = new Song(new JSONObject(get.getResponseBodyAsString()).getJSONObject("song").toString()); assertEquals(s.id, obj.getInt("first_song")); // all random songs should fit in this hashset HashSet<Song> randSet = new HashSet<Song>(15); get = new GetMethod(URL + "playlist/" + rand.id + "/songs"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals("toto", obj.get("name")); arr = obj.getJSONArray("playlist"); assertEquals(15, arr.length()); for (int i = 0; i < arr.length(); i++) { Song ss = new Song(arr.getJSONObject(i).toString()); assertFalse(randSet.contains(ss)); randSet.add(ss); } // there are 24 songs total in library, try to create a 30 songs playlist post = new PostMethod(URL + "playlist/random"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("number", "30"); post.addParameter("name", "titi"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(24, obj.getInt("added")); rand = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals(24, rand.playtime); assertEquals(24, rand.songs); assertEquals("titi", rand.name); // all 24 random songs should fit in this hashset randSet = new HashSet<Song>(24); get = new GetMethod(URL + "playlist/" + rand.id + "/songs"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals("titi", obj.get("name")); arr = obj.getJSONArray("playlist"); assertEquals(24, arr.length()); for (int i = 0; i < arr.length(); i++) { Song ss = new Song(arr.getJSONObject(i).toString()); assertFalse(randSet.contains(ss)); randSet.add(ss); } // re-create 'titi' with 10 songs post = new PostMethod(URL + "playlist/random"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("number", "10"); post.addParameter("name", "titi"); client.executeMethod(post); assertEquals(200, post.getStatusCode()); obj = new JSONObject(post.getResponseBodyAsString()); assertEquals(10, obj.getInt("added")); rand = new Playlist(obj.getJSONObject("playlist").toString()); assertEquals(10, rand.playtime); assertEquals(10, rand.songs); assertEquals("titi", rand.name); // playlists for user: '******', 'bar', 'toto', 'titi' get = new GetMethod(URL + "playlists"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals(4, obj.getJSONArray("playlists").length()); foo = new Playlist(obj.getJSONArray("playlists").get(0).toString()); bar = new Playlist(obj.getJSONArray("playlists").get(1).toString()); Playlist toto = new Playlist(obj.getJSONArray("playlists").get(2).toString()); Playlist titi = new Playlist(obj.getJSONArray("playlists").get(3).toString()); assertEquals("foo", foo.name); assertEquals(0, foo.songs); assertEquals("bar", bar.name); assertEquals(2, bar.songs); assertEquals("toto", toto.name); assertEquals(15, toto.songs); assertEquals("titi", titi.name); assertEquals(10, titi.songs); // remove all 4 user playlists post = new PostMethod(URL + "playlists/remove"); post.addRequestHeader("sessionId", user_sessionId); post.addParameter("playlist_ids[]", "" + foo.id); post.addParameter("playlist_ids[]", "" + bar.id); post.addParameter("playlist_ids[]", "" + toto.id); post.addParameter("playlist_ids[]", "" + titi.id); client.executeMethod(post); assertEquals(204, post.getStatusCode()); // check there are no more user playlists get = new GetMethod(URL + "playlists"); get.addRequestHeader("sessionId", user_sessionId); client.executeMethod(get); assertEquals(200, get.getStatusCode()); obj = new JSONObject(get.getResponseBodyAsString()); assertEquals(0, obj.getJSONArray("playlists").length()); }