public static void asyncHttpPost(String url, List<String> headers, Map<String, String> paramValues, AsyncCompletionHandler handler) throws Exception { AsyncHttpClient.BoundRequestBuilder builder = asyncHttpClient.preparePost(url); if (!CollectionUtils.isEmpty(headers)) { for (String header : headers) { builder.setHeader(header.split("=")[0], header.split("=")[1]); } } if (!MapUtils.isEmpty(paramValues)) { FluentStringsMap params = new FluentStringsMap(); for (Map.Entry<String, String> entry : paramValues.entrySet()) { params.put(entry.getKey(), Collections.singletonList(entry.getValue())); } builder.setParameters(params); } builder.setHeader("Accept-Charset", "UTF-8"); if (handler != null) { builder.execute(handler); } else { builder.execute(); } }
public FluentStringsMap(FluentStringsMap src) { if (src != null) { for (Map.Entry<String, List<String>> header : src) { add(header.getKey(), header.getValue()); } } }
@Override public List<String> put(String key, List<String> value) { if (key == null) { throw new NullPointerException("Null keys are not allowed"); } List<String> oldValue = get(key); replaceWith(key, value); return oldValue; }
@Test public void nullValueTest() { FluentStringsMap map = new FluentStringsMap(); map.add("foo", (String) null); assertEquals(map.getFirstValue("foo"), null); assertEquals(map.getJoinedValue("foo", ", "), null); assertEquals(map.get("foo").size(), 1); }
protected void doCloseRequest() { ((DefaultOptions) options).b.reconnect(false); List<String> uuid = decodeQueryString(request).get("X-Atmosphere-tracking-id"); if (!closedByProtocol.getAndSet(true)) { RequestBuilder r = new RequestBuilder(); FluentStringsMap f = new FluentStringsMap(); f.add("X-Atmosphere-Transport", "close").add("X-Atmosphere-tracking-id", uuid); r.setUrl(request.uri()) .setMethod("GET") .setHeaders(request.headers()) .setQueryParams(f); try { options.runtime().prepareRequest(r.build()).execute().get(); } catch (Exception e) { logger.debug("Was unable to send the close request {}", uuid); logger.trace("", e); } } }
com.ning.http.client.FluentStringsMap map = new com.ning.http.client.FluentStringsMap(); map.add("name", "one_value"); Set<String> values= new HashSet<String>(); values.add("1"); values.add("2"); values.add("3"); values.add("4"); map.add("values", values);
static FluentStringsMap decodeQueryString(Request request) { Map<String, List<String>> c = request.queryString(); FluentStringsMap f = new FluentStringsMap(); f.putAll(c); return f; }
@Test public void mapConstructorNullTest() { FluentStringsMap map = new FluentStringsMap((Map<String, Collection<String>>) null); assertEquals(map.keySet().size(), 0); }
/** * Removes the values for the given keys if present and returns this object. * * @param keys The keys * @return This object */ public FluentStringsMap deleteAll(Collection<String> keys) { if (keys != null) { for (String key : keys) { remove(key); } } return this; }
/** * Returns the value for the given key. If there are multiple values for this key, * then only the first one will be returned. * * @param key The key * @return The first value */ public String getFirstValue(String key) { List<String> values = get(key); if (values == null) { return null; } else if (values.isEmpty()) { return ""; } else { return values.get(0); } }
/** * Replaces the values for the given key with the given values. * * @param key The key * @param values The new values * @return This object */ public FluentStringsMap replaceWith(final String key, final String... values) { return replaceWith(key, Arrays.asList(values)); }
@Override protected AsyncHttpClient.BoundRequestBuilder configureAHC(Request request) { FluentStringsMap m = DefaultSocket.decodeQueryString(request); m.put("X-Atmosphere-Transport", Arrays.asList(new String[]{"polling"})); m.remove("X-atmo-protocol"); return options.runtime().preparePost(request.uri()) .setHeaders(request.headers()) .setQueryParams(m) .setMethod(Request.METHOD.POST.name()); } }
@Override public void putAll(Map<? extends String, ? extends List<String>> values) { replaceAll(values); }
@Test public void emptyValueTest() { FluentStringsMap map = new FluentStringsMap(); map.add("foo", ""); assertEquals(map.keySet(), new LinkedHashSet<>(Arrays.asList("foo"))); assertEquals(map.getFirstValue("foo"), ""); assertEquals(map.getJoinedValue("foo", ", "), ""); assertEquals(map.get("foo"), Arrays.asList("")); }
protected void doCloseRequest() { ((DefaultOptions) options).b.reconnect(false); List<String> uuid = decodeQueryString(request).get("X-Atmosphere-tracking-id"); if (!closedByProtocol.getAndSet(true)) { RequestBuilder r = new RequestBuilder(); FluentStringsMap f = new FluentStringsMap(); f.add("X-Atmosphere-Transport", "close").add("X-Atmosphere-tracking-id", uuid); r.setUrl(request.uri()) .setMethod("GET") .setHeaders(request.headers()) .setQueryParams(f); try { options.runtime().prepareRequest(r.build()).execute().get(); } catch (Exception e) { logger.debug("Was unable to send the close request {}", uuid); logger.trace("", e); } } }
WSRequest request = new WSRequest("<Method>"); //Method can be GET, POST etc request.setUrl("<service-url>"); request.setHeader("Content-Type", "application/x-www-form-urlencoded"); com.ning.http.client.FluentStringsMap map = new com.ning.http.client.FluentStringsMap(); map.add("name", "aniket"); Set<String> values= new HashSet<String>(); values.add("1"); values.add("2"); values.add("3"); values.add("4"); map.add("values", values); request.setQueryParameters(map); Promise<Response> response = request.execute();
static FluentStringsMap decodeQueryString(Request request) { Map<String, List<String>> c = request.queryString(); FluentStringsMap f = new FluentStringsMap(); f.putAll(c); return f; }
@Override public List<String> put(String key, List<String> value) { if (key == null) { throw new NullPointerException("Null keys are not allowed"); } List<String> oldValue = get(key); replaceWith(key, value); return oldValue; }