2013-08-21 48 views
1

我在这里面临的形势非常奇怪的问题。我有一台运行在我的机器上的servlet,它根据一些输入参数呈现我的网页。现在Phantomjs :: POST数据作为JSON到Servlet不工作

,如果我尝试把我的数据作为JSON对象作为POST请求类型我与PhantomJS抓屏不工作。对于例如如果我尝试:

客户端

var data = {"op": "get"}; 

page.open(address, 'POST', data, function (status) { 
if (status !== 'success') { 
    console.log('[ERROR] :: Unable to fetch the address - ' + address + ", with data - " + data); 
    phantom.exit(); 
} else { 
    page.render(output);   
} 
console.log('processing...'); 
}); 

Sever的侧

现在,在服务器端,我使用Apache的速度查看模板所以我有一个可以同时处理一个单一的方法得到和发布像:

public Template handleRequest(HttpServletRequest request, HttpServletResponse response, 
     Context context){ 
    System.out.println(request.getParameter("op")); 
    //Always null 
} 

但是,如果我尝试发送我的数据从phan tomjs为: VAR数据=“OP =得到& ......” 它的工作原理

而且,在我的code..I其他地方的许多地方正在做的Ajax POST请求同一个servlet,它完全适用于所有那些请求。

任何人都可以帮助我解释为什么我的servlet没有读取从phantomjs传递的JSON参数...?

在此先感谢!

回答

0

Servlet处理简单的请求,所以他们只知道如何解析(本地)HTTP参数,或者来自URL的GET参数,或者POST参数作为application/x-www-form-urlencoded发送。较新版本的Servlet规范也可以读取multipart/form-data

但也没什么可说的JSON无论是在Servlet或者HTTP规范提及。所以你必须使用一个知道如何解析JSON并在Velocity上下文中产生对象的库。