如何使用params调用URL并在servlet中获取响应?
我有一种情况,需要引入一个中间servlet来处理来自现有项目的请求,并将操纵的响应重定向到现有项目或新项目。 该servlet将充当从其他应用程序登录到新项目的接口 。
所以目前我使用以下代码将jsp中的响应作为xml返回。
var jqxhr =$.post("http://abhishek:15070/abc/login.action", { emailaddress: "ars@gmail.com", projectid: "123" }, function(xml) { if($(xml).find('isSuccess').text()=="true") { sessiontoken=$(xml).find('sessiontoken').text(); setCookie("abcsessionid", sessiontoken , 1); setCookie("abcusername",e_add,1); } } ) .error(function() { if(jqxhr.responseText == 'INVALID_SESSION') { alert("Your Session has been timed out"); window.location.replace("http://abhishek:15070/abc/index.html"); }else { alert( jqxhr.responseText); } });
xml内容
334465683124 true
但现在我希望使用servlet完成同样的事情,是否可能?
String emailid=(String) request.getParameter("emailaddress"); String projectid=(String) request.getParameter("projectid");
更新
我想出了点什么。
是否有可能返回一个带有表单的html页面(来自servlet),它的on body load
它将提交一个表单,并且在提交此表单时它将收到将被处理的响应xml 。
使用java.net.URLConnection
或Apache HttpComponents Client 。 然后,使用像JAXB之类的XML工具解析返回的HTTP响应。
开球示例:
String emailaddress = request.getParameter("emailaddress"); String projectid = request.getParameter("projectid"); String charset = "UTF-8"; String query = String.format("emailaddress=%s&projectid=%s", URLEncoder.encode(emailaddress, charset), URLEncoder.encode(projectid, charset)); URLConnection connection = new URL("http://abhishek:15070/abc/login.action").openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Accept-Charset", charset); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=" + charset); try { connection.getOutputStream().write(query.getBytes(charset)); } finally { connection.getOutputStream().close(); } InputStream response = connection.getInputStream(); // ...
也可以看看:
- 使用java.net.URLConnection来触发和处理HTTP请求
- HttpClient教程和示例
实际上,你可能想要的并不是一个中间servlet。 您可能想要的是一个servletfilter,编写一个并不是特别难。 我过去写了一篇,昨天刚开始新的。
像这样或者这样的文章非常简单地说明了如何使用servletfilter来拦截对特定URL的调用,然后从那里重定向或拒绝。 如果传入的URL与filter的模式匹配,它将获取请求和响应的镜头,然后它可以选择是否将其传递给下一个filter。
我不知道所有第三方安全解决方案是否都这样做,但至少CAS似乎是以这种方式实现的。
- 为什么输出显示错误的顺序?
- Groovy&maven – 从src / main / groovy编译源代码
- 在没有Grails的普通Spring MVC中使用GSP视图
- Spring集成 – 外部化JDBC查询
- 如何在java或groovy中查找两个日期之间的天数?
- 解决错误java.lang.NoSuchMethodError:org.codehaus.groovy.ast.ModuleNode.getStarImports()Ljava / util / List;
- 通过Groovy在Java中进行XML解析
- 如何在gradle任务中通过scp复制目录?
- 单元从Groovy测试用例测试Java类中的静态方法