【问题标题】:Ajax post call to a rest service through servletAjax 通过 servlet 发布对休息服务的调用
【发布时间】:2014-02-12 15:38:01
【问题描述】:

我有一个小问题: 我正在开发一个 jQuery Mobile 应用程序,我需要对休息服务进行 ajax 后调用。 我使用 servlet 动态创建页面。

我试图对其余的 url 进行 ajax 调用:

http://localhost:8181/myRestServicePath/func?key=value

来自具有以下网址的页面:

http://localhost:8080/Mypage

但我从浏览器收到了跨域错误。

所以我正在尝试执行这个调用,通过使用 doPost() 方法的 Java servlet。

现在,我的意图是从

进行 ajax 发布调用
 http://localhost:8080/Mypage

到:

 http://localhost:8080/myServletPath/func?key=value

这个 servlet 应该将 POST 请求重定向到我的 RestService:

http://localhost:8181/myRestServicePath/func?key=value

如何执行此重定向?

【问题讨论】:

  • 也许您应该考虑将您的 rest 服务和其他 servlet 保持在同一个端口上?这将是典型的配置,可以解决您的困难。
  • @MalcolmSmith 我不能在同一个端口上注册 servlet 和 rest 服务。

标签: java jquery ajax rest servlets


【解决方案1】:

可能有几种方法可以实现这一目标。我只是分享以下两种常见的可能性。

对于 POST 请求:- 您需要在 servlet 中使用 Apache HTTPClient 将请求发送到 Web 服务并获得响应。收到响应后,您可以将该响应发送到您的页面。

对于 GET 请求:-

跨域请求不需要额外的 servlet。你可以使用JSONP

jQuery 示例:

$.ajax({
     url:"http://localhost:8080/myServletPath/func?key=value",
     dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
     success:function(json){
         // do stuff with json (in this case an array)
         alert("Success");
     },
     error:function(){
         alert("Error");
     },
});

后端示例请访问Java J2EE Tutorial for Cross Domain JSONP

【讨论】:

  • 我不想使用jsonp,我需要使用json。
  • Servlet 将发送响应为 response.setContentType("text/javascript");详情请访问reddymails.blogspot.com/2012/05/…
  • 这将是一个 JSON 响应,您不必担心任何事情。只需发送回调方法名称即可。即使您没有指定回调方法名称,jQuery 也会为您处理:)
  • @JaffarRamay 我的 rest 方法用于解析我在问题中所写的 URL,最重要的是,jsonp 不支持 POST。
  • @JaffarRamay 是的,谢谢。我正在了解 Apache HTTPClient。
猜你喜欢
  • 1970-01-01
  • 2012-04-24
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多