[转帖]跨域Servlet调用Servlet的实现_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3802 | 回复: 0   主题: [转帖]跨域Servlet调用Servlet的实现        下一篇 
Leon
注册用户
等级:少校
经验:1436
发帖:116
精华:7
注册:2013-1-4
状态:离线
发送短消息息给Leon 加好友    发送短消息息给Leon 发消息
发表于: IP:您无权察看 2013-1-4 15:17:28 | [全部帖] [楼主帖] 楼主

跨域Servlet调用Servlet的实现

跨域后,Servlet容器之间彼此是未知的环境,也不能获取到对方的ServetContext。因此使用内部跳转和重定向(需要带请求参数)调用都是错误的,也是无效的。

通过HttpClinet模拟发起请求,可以实现跨域Servlet调用Servlet。

实现方法:在Servlet的service方法中创建httpclient对象,来发起第二次请求。将请求转发个另一个域的servlet。

publicvoid service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //todo:执行第一个请求的处理


      ....... //发出第二次请求,调用第二个Servert:postRemotetUrl
      //建立HTTP请求
      HttpClient httpClient = new DefaultHttpClient();
      //注册证书
      httpClient.getConnectionManager().getSchemeRegistry().register(sch);
      //设置请求超时时间
      httpClient.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT, 20000);
      //设置连接超时时间
      httpClient.getParams().setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 30000);
      //建立POST请求
      HttpPost httpPost = new HttpPost(postRemotetUrl);
      httpPost.setEntity(new StringEntity(msg));
      //提交httppost请求
      HttpResponse httpResp = httpClient.execute(httpPost);
      httpClient.getConnectionManager().shutdown();
      .......
}


本文出自 “熔 岩” 博客,请务必保留此出处http://lavasoft.blog.51cto.com/62575/1105002




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论