Распечатать содержимое HttpParams / HttpUriRequest? - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть экземпляр HttpUriRequest , есть ли способ напечатать все содержащиеся в нем параметры? Например, я могу почти получить их как:

HttpUriRequest req = ...;
HttpParams params = req.getParams();
for (int i = 0; i < params.size(); i++) { // ?
    println(params.getParam(i); // ?
}

Есть ли способ сделать это?

Спасибо

Ответы [ 3 ]

3 голосов
/ 17 января 2013

Вы можете просто перебрать все поля заголовка.

HttpUriRequest req = ...;
.......
Header[] headerFields = request.getAllHeaders();
for(int e = 0; e<header.length; e++){                                    
    System.out.println(headerFields[e].getName() + ": " + headerFields[e].getValue());
}

Предложенный метод params.toString () не работает.

3 голосов
/ 05 февраля 2014

Вы ищете параметры HTTP или параметры URI?

Параметры HTTP - это такие вещи, как пользовательский агент, размер буфера сокета, версия протокола и т. Д.

Параметры URI - это значения клиента, которые передаются как часть запроса, например,

?param1=value1&param2=value2

Если вы ищете параметры URI, попробуйте что-то вроде этого:

List<String> uriParams = Arrays.asList(request.getURI().getQuery().split("&"));

Но если вам нужны необработанные HTTP-параметры, это немного сложнее, потому что не все реализации HttpParams поддерживают getNames(). Вы должны сделать что-то вроде этого:

HttpParamsNames params = (HttpParamsNames)request.getParams();
Set<String> names;

if (params instanceof ClientParamsStack) {
    names = new HashSet<>();

    // Sorted by priority, see ClientParamsStack
    ClientParamsStack cps = (ClientParamsStack)params;
    if (cps.getApplicationParams() != null) {
        names.addAll(((HttpParamsNames)cps.getApplicationParams()).getNames());
    }
    if (cps.getClientParams() != null) {
        names.addAll(((HttpParamsNames)cps.getClientParams()).getNames());
    }
    if (cps.getRequestParams() != null) {
        names.addAll(((HttpParamsNames)cps.getRequestParams()).getNames());
    }
    if (cps.getOverrideParams() != null) {
        names.addAll(((HttpParamsNames)cps.getOverrideParams()).getNames());
    }
} else {
    names = params.getNames();
}

for (String name : names) {
    System.out.println(name + ": " + request.getParams().getParameter(name));
}
0 голосов
/ 28 февраля 2011

HttpUriRequest расширяет HttpMessage, в котором есть getAllHeaders (), getParams () и т. Д.

Посмотрите здесь: http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/index.html, поиск HttpMessage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...