jfianl接口测试可以测通返回200但是没有返回正常的json却返回html页面是怎么回事?

() {

   = getPara()= getRequest().getParameter()= getRequest().getParameter()= = (.() < ) {
      = } {
      = .substring(.length() - )= .substring(.length() - )}

   = getPara()= +
         + + + + + + + + + + ..println(+ )= .()= JSONObject()(== ) {
      .put()} {
      .put()}
   renderJson()}

POSTMAN测试:

http://192.168.1.81:8080/monitorStatusNotify?cameraId=1&photoScenario=2&monitorResFlag=12&time=2018-08-09 12:23:34

应该返回json,但是第三方调用时把页面一起返回了

image.png

image.png

正常情况:可以返回json数据

梳理问题点:

正常项目登录时,返回json数据;

第三方调用或者工具测试时能测通但是会返回html页面,

不知道是什么问题导致的,求大神给个思路

之前怀疑是拦截器问题或者是第三方登录的问题,

不知道JFianl中写第三方可以调用的接口,这种情况是怎么回事,要怎么来解决,希望各位懂的大神能给些建议,非常感谢。

评论区

JFinal

2018-08-14 10:34

再看了一下你的贴子,应该是路由弄错了,在后台设置个断点就知道是 renderJson 还是 render(string) 了

braveflying

2018-08-14 10:42

@JFinal 谢谢您,我前台测试的时候是这么写的:
function fenxi1(){
$.ajax({
url:'/login/monitorStatusNotify',
type:"post",
data:{
"cameraId": "2",
"photoScenario": "1",
"monitorResFlag": 1,
"time":"2018-08-09 12:23:34"
},
success:function(data){
console.log(data);
alert(data);
}
})
};

后台后边返回是这样写的:
JSONObject jsonObject = new JSONObject();
if (a == 1) {
jsonObject.put("returnCode", "200");
} else {
jsonObject.put("returnCode", "500");
}
renderJson(jsonObject);
还是我应该用renderJson();,这种我也用过,测试也是返回了html的页面,所以在想是不是第三方访问时的拦截的问题呢。

braveflying

2018-08-14 11:04

@JFinal 非常感谢大神给的思路,我在LoginFilter中设置了下拦截
//排除登陆页面和res目录
if(!currUrl.endsWith("/login") && !currUrl.endsWith("/login/randomCode") && !currUrl.endsWith("login/monitorStatusNotify") && !currUrl.startsWith(contextPath + "/res")) {
if(session.getAttribute("sysUser") == null) {
response.sendRedirect(request.getContextPath() + "/login");//如果session为空表示用户没有登录就重定向到login页面
return;
}
然后postman访问时加上了路由:http://191.168.1.81:8080/login/monitorStatusNotify?cameraId=1&photoScenario=2&monitorResFlag=12&time=2018-08-09 12:23:34 就可以了正常返回json了。 非常感谢大神的提醒。