如何在检票口中解析多部分表单数据

How to parse multi-part form data in wicket

当我的页面被第三方页面点击时,我在请求负载中得到以下数据:

Content-type: multipart/form-data, boundary----------14048
Content-Length = 590

----------14048
Content-disposition: form-data; name ="xyz"

{"abc":"lmn","def":"ghi"}
----------14048

我需要从 Java class 中的这个参数读取 JSON 字符串。我该怎么做?

我当前的代码如下所示:

IRequestParameters requestParameters = getRequest().getPostParameters();
    if (requestParameters != null && requestParameters.getParameterNames().contains( "abc" )&&requestParameters.getParameterValue( "abc" ) != null){
        value = requestParameters.getParameterValue( "abc" ).toString();
}

提前致谢。

下面的代码对我来说工作正常。

HttpSevletRequest request = (HttpSevletRequest )getRequest.getContainerRequest();
try{
 InputStreamReader inputReader = new InputStreamReader(request.getInputStream());
    BufferedReader reader = new BufferedReader(inputReader );
    for(String line;(line = reader.readLine())!=null;){
        if(line.contains("abc")){
            //perform task....
     }
    }
}catch(IOException e){
 //logs
}

首先,您需要parse multipart form data in Wicket:

MultipartServletWebRequest multiPartRequest = 
      webRequest.newMultipartWebRequest(getMaxSize(), "ignored");
// multiPartRequest.parseFileParts(); // this is needed after Wicket 6.19.0+
IRequestParameters params = multiPartRequest.getRequestParameters();

那么你需要parse the JSON fragment, one way to do that is by using org.json.

import org.json.*;

JSONObject jsondict = new JSONObject(params.getParameter("xyz");

然后你需要获取你感兴趣的JSON参数:

string payload = jsondict.getString("abc");