最近开发一个项目需要后台(C++)请求一个url传递json参数,我这边接收json参数,处理后返回json数据。
使用http post传送,最初在request里死活找不到json参数,后来查找资料发现json数据在输入流中,需反序列话才能得到。
public void posDate() throws IOException
{
JSONObject jsonObj = new JSONObject();
HttpServletRequest request = ServletActionContext.getRequest();
String param = getPostParameter(request);
System.out.println(param);
JSONArray jsonArray3 = JSONArray.fromObject("["+param+"]" );
JSONObject jsonObjSN = jsonArray3.getJSONObject(0);
String sn = (String) jsonObjSN.get("sn");
if(StringUtil.isNotNullStr(sn)){
Map<String, String> params = new HashMap<String, String>();
params.put("sn", sn);
List<TPos> posList = posService.findAll(params);
if(null != posList && posList.size() > 0 ){
TPos pos = posList.get(0);
try {
jsonObj.put("sn", pos.getFsn());
jsonObj.put("merchat",pos.getMerchant().getFmerchantName() );
jsonObj.put("CUS_ID",pos.getMerchant().getFmerchatNO());
jsonObj.put("TERM_ID", pos.getFposNO());
}
catch (JSONException e) {
e.printStackTrace();
}
}
else{
try {
jsonObj.put("sn", "");
jsonObj.put("merchat","未注册商户" );
jsonObj.put("CUS_ID","999999999999999");
jsonObj.put("TERM_ID", "99999999");
}
catch (JSONException e) {
e.printStackTrace();
}
}
}else{
try {
jsonObj.put("sn", "");
jsonObj.put("merchat","未注册商户" );
jsonObj.put("CUS_ID","999999999999999");
jsonObj.put("TERM_ID", "99999999");
}
catch (JSONException e) {
e.printStackTrace();
}
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print(jsonObj);
out.close();
}
/**
* 根据request获取Post参数
* @param request
* @return
* @throws IOException
*/
private static String getPostParameter(HttpServletRequest request) throws IOException{
BufferedInputStream buf = null;
int iContentLen = request.getContentLength();
byte sContent[] = new byte[iContentLen];
String sContent2 = null;
try {
buf = new BufferedInputStream(request.getInputStream());
buf.read(sContent, 0, sContent.length);
sContent2 = new String(sContent,0,iContentLen,"UTF-8");
} catch (IOException e) {
throw new IOException("Parse data error!",e);
} finally
{
try {
buf.close();
} catch (IOException e) {
}
}
return sContent2;
}
http post方式获取json参数
最新推荐文章于 2024-07-26 03:42:47 发布