打印HttpParams / HttpUriRequest的内容?

我有一个HttpUriRequest实例,有没有办法打印它包含的所有参数? 例如,我几乎可以得到它们:

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

有没有办法做到这一点?

谢谢

您在寻找HTTP参数还是URI参数?

HTTP参数类似于用户代理,套接字缓冲区大小,协议版本等。

URI参数是作为请求的一部分传递的客户端值,例如

 ?param1=value1&param2=value2 

如果您正在寻找URI参数,请尝试以下方法:

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

但是如果你确实需要原始HTTP参数,那就更复杂了,因为并非HttpParams的所有实现都支持getNames() 。 你必须做这样的事情:

 HttpParamsNames params = (HttpParamsNames)request.getParams(); Set 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)); } 

您可以简单地遍历所有标题字段。

 HttpUriRequest req = ...; ....... Header[] headerFields = request.getAllHeaders(); for(int e = 0; e 

建议的方法params.toString()不起作用。

HttpUriRequest扩展了HttpMessage,它有getAllHeaders(),getParams()等。

看看这里: http ://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/index.html,搜索HttpMessage