response.getWriter().write(json);无法将值传给前台,是不是线程的问题?

时间:2022-09-15 12:28:00
动态库回调函数在这:
public void OnGetCallRecordRspEnd() {
String Jsondata = JsonUtil.listToJson(list);
        HttpServletResponse response = CallingLogAction.g_response;
OutPut.responseWritejson(response,Jsondata);
}
OutPut.responseWritejson的实现在这:
public static void responseWritejson(HttpServletResponse response,String json) {
response.setContentType("application/json;charset=utf-8");
if (json != null) {
try {
response.getWriter().write(json);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这里的response我已经设置为全局的了,所以在动态库回调的函数OnGetCallRecordRspEnd() 中,传给OutPut.responseWritejson()的response不是库线程的response。可是为什么我的 前台ajax 通过请求,返回的数据接受不到?也就是我response.getWriter().write(json);没有把json值传给前台,为什么、。我感觉是request和response对应出错了,可是,怎么解决呢?~~~
求大神啊~~~~~
谢谢~~~~

}

11 个解决方案

#1


json 格式正确不

#2


引用 1 楼 rui888 的回复:
json 格式正确不


我确定是正确的。
System.out.println()出来了

#3


引用 1 楼 rui888 的回复:
json 格式正确不



json封装的值为:[{"strBitrate":"","strCallIP":"192.168.7.222","strCallTime":"2014-5-7 14:12:43","strCallType":"呼出","strProtocol":"H323","strTime":"00:00:01"},{"strBitrate":"","strCallIP":"92.168.7.151","strCallTime":"2014-5-7 14:12:41","strCallType":"未接","strProtocol":"H323","strTime":"00:00:00"}]

#5


1.线程问题使用ThreadLocal的全局对象保存response
2.输出后要调用writer的flush方法

#6


引用 4 楼 rui888 的回复:
给你个参考吧。


谢谢,你的参考我看了。
现在我的问题是,在终端回调函数的那个线程里面 response.getWriter().write(json)是无法把值传给前台的request请求。

#7


你前台怎么写的。 你配置的是application/json; 

画面要用json 来处理。

#8


引用 7 楼 rui888 的回复:
你前台怎么写的。 你配置的是application/json; 

画面要用json 来处理。



$.ajax({
    type: "POST",
    url:"CallingLog",
    dataType:"json",
    contentType: "application/json; charset=utf-8",
    success: function (Jsondata) {

这是前台,没有错。我感觉 就是 request和response错位的问题

#9


打印错误看看  error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }

#10


引用 9 楼 rui888 的回复:
打印错误看看  error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }


谢谢~~
这个问题已经解决了~
因为消息根本无法返回到前端。应该返回前端的消息被阻塞了。
我在需要响应的地方设置了sleep,等到终端的参数全部接受完了之后,将消息拿来再进行response。

#11


引用 10 楼 YAJL_ 的回复:
Quote: 引用 9 楼 rui888 的回复:

打印错误看看  error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }


谢谢~~
这个问题已经解决了~
因为消息根本无法返回到前端。应该返回前端的消息被阻塞了。
我在需要响应的地方设置了sleep,等到终端的参数全部接受完了之后,将消息拿来再进行response。


我也遇到此问题,想问下你这边是怎么解决的?

#1


json 格式正确不

#2


引用 1 楼 rui888 的回复:
json 格式正确不


我确定是正确的。
System.out.println()出来了

#3


引用 1 楼 rui888 的回复:
json 格式正确不



json封装的值为:[{"strBitrate":"","strCallIP":"192.168.7.222","strCallTime":"2014-5-7 14:12:43","strCallType":"呼出","strProtocol":"H323","strTime":"00:00:01"},{"strBitrate":"","strCallIP":"92.168.7.151","strCallTime":"2014-5-7 14:12:41","strCallType":"未接","strProtocol":"H323","strTime":"00:00:00"}]

#4


#5


1.线程问题使用ThreadLocal的全局对象保存response
2.输出后要调用writer的flush方法

#6


引用 4 楼 rui888 的回复:
给你个参考吧。


谢谢,你的参考我看了。
现在我的问题是,在终端回调函数的那个线程里面 response.getWriter().write(json)是无法把值传给前台的request请求。

#7


你前台怎么写的。 你配置的是application/json; 

画面要用json 来处理。

#8


引用 7 楼 rui888 的回复:
你前台怎么写的。 你配置的是application/json; 

画面要用json 来处理。



$.ajax({
    type: "POST",
    url:"CallingLog",
    dataType:"json",
    contentType: "application/json; charset=utf-8",
    success: function (Jsondata) {

这是前台,没有错。我感觉 就是 request和response错位的问题

#9


打印错误看看  error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }

#10


引用 9 楼 rui888 的回复:
打印错误看看  error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }


谢谢~~
这个问题已经解决了~
因为消息根本无法返回到前端。应该返回前端的消息被阻塞了。
我在需要响应的地方设置了sleep,等到终端的参数全部接受完了之后,将消息拿来再进行response。

#11


引用 10 楼 YAJL_ 的回复:
Quote: 引用 9 楼 rui888 的回复:

打印错误看看  error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }


谢谢~~
这个问题已经解决了~
因为消息根本无法返回到前端。应该返回前端的消息被阻塞了。
我在需要响应的地方设置了sleep,等到终端的参数全部接受完了之后,将消息拿来再进行response。


我也遇到此问题,想问下你这边是怎么解决的?