Javascript 将数据作为json发布到不在Phantomjs中工作的Servlet
我在这里面临着非常奇怪的问题。我的机器上运行着一个servlet,它根据一些输入参数呈现我的网页 现在,如果我尝试将数据作为JSON对象作为POST请求类型发送,那么我的PhantomJS屏幕截图将无法工作。例如,如果我尝试: 客户端Javascript 将数据作为json发布到不在Phantomjs中工作的Servlet,javascript,json,servlets,phantomjs,velocity,Javascript,Json,Servlets,Phantomjs,Velocity,我在这里面临着非常奇怪的问题。我的机器上运行着一个servlet,它根据一些输入参数呈现我的网页 现在,如果我尝试将数据作为JSON对象作为POST请求类型发送,那么我的PhantomJS屏幕截图将无法工作。例如,如果我尝试: 客户端 var data = {"op": "get"}; page.open(address, 'POST', data, function (status) { if (status !== 'success') { console.log('[ERROR]
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...');
});
服务器端
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...');
});
现在,在服务器端,我使用Apache Velocity视图模板,因此我有一个方法可以处理get和post,如下所示:
public Template handleRequest(HttpServletRequest request, HttpServletResponse response,
Context context){
System.out.println(request.getParameter("op"));
//Always null
}
但是,如果我尝试以以下方式从phantomjs发送数据:
var data = "op=get&..."
It works
另外,在我的代码的其他地方,我正在对同一个servlet执行Ajax POST请求,它可以完美地处理所有这些请求
有人能解释为什么我的servlet没有读取从Phantomjs传递的JSON参数吗?servlet处理简单的请求,因此它们只知道如何解析(本机)HTTP参数,或者从URL获取参数,或者作为
应用程序/x-www-form-urlencoded
发送的POST
参数。Servlet规范的较新版本还可以读取多部分/表单数据
但是Servlet或HTTP规范中都没有提到JSON。因此,您必须使用一个知道如何解析JSON并使生成的对象在Velocity上下文中可用的库。servlet处理简单的请求,因此它们只知道如何解析(本机)HTTP参数,或者从URL获取参数,或
POST
参数作为application/x-www-form-urlencoded
发送。Servlet规范的较新版本还可以读取多部分/表单数据
但是Servlet或HTTP规范中都没有提到JSON。因此,您必须使用一个知道如何解析JSON并使生成的对象在Velocity上下文中可用的库