我想在请求正文到达Http Servlet并获得processed.The请求正文的JSON有效负载如下所示,我想摆脱“PayamtChqmanViewObject”(详细信息)部分。
{
"ChqAccCode": "1",
"ChqAmt": 1,
"ChqBankCompCode": "TEST",
"ChqBchName": "TEST",
"ChqBchPost": "Y",
"ChqPostDate":"2020-08-14",
"ChqCompCode": "TEST",
"ChqDate": "2020-04-21",
"ChqDeptCode": "0",
"ChqDesc": "TEST",
"ChqDraftCode": "M",
"ChqJobCode": null,
"ChqJointVenName": null,
"ChqNum": 123,
"ChqPayeeAddr1": "Rome",
"ChqPayeeAddr2": "1",
"ChqPayeeAddr3": "Rome",
"ChqPayeeCountry": "Italy",
"ChqPayeeName1": "A1",
"ChqPayeeName2": null,
"ChqPayeePostalCode": "85695",
"ChqPayeeRegCode": "IT",
"ChqRecCode": "O",
"ChqSeqNum": "1",
"ChqVenCode": "ZZ",
"ChqVouCode": null,
"PayamtChqmanViewObj":[
{
"PaCompCode": "ZZ",
"PaChqCompCode": "ZZ",
"PaVenCode": "ACME",
"PaChqNum": 123,
"PaPayCurrAmt": 1,
"PaAmt": 1,
"PaVouInvCode": "INV001",
"PaDiscAmt": 0,
"PaChqSeqNum": "1"
}
]
}
我可以使用以下方法获得请求正文,但我不知道如何删除JSON的详细部分并将处理后的请求正文传递给HTTP Servlet。
public static String getBody(HttpServletRequest request) throws IOException {
String body = null;
StringBuilder stringBuilder = new StringBuilder();
BufferedReader bufferedReader = null;
try {
InputStream inputStream = request.getInputStream();
if (inputStream != null) {
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
char[] charBuffer = new char[128];
int bytesRead = -1;
while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer, 0, bytesRead);
}
} else {
stringBuilder.append("");
}
} catch (IOException ex) {
throw ex;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException ex) {
throw ex;
}
}
}
body = stringBuilder.toString();
System.out.println("BODY IS:" + body);
return body;
}
非常感谢您的帮助!
你不能改变请求,但你可以包装它。更多细节请看下面的问题:我们为什么要包装HttpServletRequest?api提供了一个HttpServletRequestWrapper,但是我们从包装请求中获得了什么呢?
您需要在servlet前面放置一个servlet过滤器才能使包装工作。
至于如何从内容中删除该部分,您可以使用string
类提供的普通旧字符串操作,或者使用类似StringUtils的东西,或者您可以使用自己选择的库解析JSON,删除该属性,然后将其写回字符串。
问题内容: 我正在处理遗留代码,需要打补丁。 问题:古老的应用程序发送了错误的HTTP POST请求。参数之一不是URL编码。我知道这个参数总是排在最后,我知道它的名字。我现在正试图在运行在Tomcat中的服务器端修复它。 由于参数格式错误,因此无法通过HttpServletRequest的标准getParameter方法访问此参数。方法仅返回null。但是当我通过ServletInputStre
问题内容: 我需要在Java中更改JSON属性的值,我可以正确获取该值,但无法修改JSON。 这是下面的代码 做这个的最好方式是什么? 问题答案: 是不可变的,旨在进行解析操作。但是,可以将其转换为允许突变的(和): 对于数组,可以使用:
我有一个来自javax的现有jsonobject。json。JsonObject类。 我一辈子都想不出如何修改其中现有的价值观。理想情况下,我想这样做: 根据API,不允许修改该映射。 http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html 此映射对象提供对JSON对象数据的只读访问,并尝试修改映射,无论是直接修改还是通过其集合
求你了,我需要你的帮助。每当我试图运行下面的程序时,它会说不兼容的类型,字符串不能转换为整数。
问题内容: 我正在尝试将我的项目目录添加到GOPATH,在Linux中,我可以这样做 在〜/ .bashrc中 Powershell中的等效性是什么 问题答案: 这应该遵循您使用Powershell设置任何Environment变量的方式(如本文所述): 如果您希望它永久存在(即将来将适用于任何外壳程序): 需要注意的一件事:当我们用来创建新的用户或计算机级环境变量时,在Windows Power
问题内容: 我正在使用 javax.servlet.http.HttpServletRequest 来实现Web应用程序。 我可以使用 getParameter 方法获取请求的参数。但是我不知道如何在请求中设置参数。 问题答案: 您不能,不使用标准API。代表服务器收到的请求,因此添加新参数不是有效的选择(就API而言)。 原则上,您可以实现一个子类,该子类包装原始请求,并拦截方法,并在转发时传递