我正在使用HttpExchange类,并希望使用getAttribute函数来获取POST参数。如果我只是调用该函数并打印结果它的工作原理。但必须有一些更好的方法来访问返回的对象并获取包含的数据。
如何访问对象?它有哪些方法?
答案 0 :(得分:2)
使用Java Reflection。使用反射你可以做这样的事情
Class c = Class.forName("YourClassName");
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString()); //iterate through these methods to find out data
答案 1 :(得分:2)
我不熟悉此API,但似乎HttpExchange.getAttribute不是用于获取POST参数的方法。相反,它是一种在一系列过滤器内共享信息的机制。由于您要实现Filters,您将记录并理解可以存储的属性。
要阅读POST详细信息,您不会HttpExchange.getRequestBody吗?
答案 2 :(得分:0)
HttpExchange为您返回给定属性名称的类型Object
。假设尝试检索该属性的人知道该属性的类型,并且可以将Object向下转换为适当的类。例如。 -
String attrValue = (String) httpExchangeObject.getAttribute("nameOfTheAttribute");
你不需要在返回的对象上使用反射来找出结构..我觉得简单的向下转换应该解决目的。
答案 3 :(得分:0)
我也不熟悉这个API。请求POST参数应该以{{1}}的原始未解析形式提供。但是,如果您知道getAttribute方法将包含您需要的数据,但您不知道它将具有哪个类(我不知道如何在不知道后者的情况下知道前者,但无论如何),您可以使用反射来打印类的名称:
getResponseBody()
如果结果是一个内部的,未记录的类,那么您可以使用更多的反射(或其他技术)来查看类层次结构,直到找到可以使用的公开记录的类或接口。
但这不应该是必要的,因为你需要的东西应该记录在某处。