HttpClient请求接口
HttpClient传递参数到某ACTION,ACTION调用后台处理好后,
把内容放到request里面,转向到某JSP或者VELOCITY页面,
页面,页面是XML格式的。HttpClient得到结果后,解析XML返回
这样的接口其实有点像前段时间做lazslo是遇到的页面和后台的交互问题。
UserLoginActionTest.java测试程序如下:
package com.megaeyes.ipcamera.test.service;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import com.megaeyes.ipcamera.test.util.XmlFileUtil;
public class UserLoginActionTest extends TestCase {
private static final String ACTION_URL = "http://192.168.10.103/test/UserLoginServiceAction.do?method=userLogonBackService";
public void testDumy() {
assertTrue(true);
}
public void testUserServiceLogon() {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(ACTION_URL);
method.addParameter("userId", "081");
method.addParameter("passWord", "luohua");
method.addParameter("timeStamp", "119874350464068663");
method.addParameter("userToken", "67b7388d0af1c6044a9dc1f7cb0728ef");
try {
client.executeMethod(method);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String returnStr = "";
try {
returnStr = method.getResponseBodyAsString();
} catch (IOException e1) {
e1.printStackTrace();
}finally{
//使用完成后要释放链接
method.releaseConnection();
}
Document doc = XmlFileUtil.getDocumentSaxByXmlStr(returnStr);
System.out.println("Status: " + XmlFileUtil.getStringValue("Status", doc));
System.out.println("ErrorCode: " + XmlFileUtil.getStringValue("ErrorCode", doc));
System.out.println("Message: " + XmlFileUtil.getStringValue("Message", doc));
System.out.println("LogonName: " + XmlFileUtil.getStringValue("LogonName", doc));
System.out.println("SessionId: " + XmlFileUtil.getStringValue("SessionId", doc));
System.out.println("Naming: " + XmlFileUtil.getStringValue("Naming", doc));
}
}
ACTION层的处理代码如下:
public ActionForward userLogonBackService(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setHeader("P3P", "CP=CAO PSA OUR");
String userId = request.getParameter("userId");
String userToken = request.getParameter("userToken");
String timeStamp = request.getParameter("timeStamp");
String remoteIp = request.getRemoteAddr();
UserManager userManager = (UserManager) getBean("userManager");
UserVO user = userManager.getUserVOByID(userId);
if (user != null) {
if (!checkUserServiceInfo(userId, timeStamp, userToken, user)) {
//检查传递的参数出错
request.setAttribute("status", FAIL_TIP);
request.setAttribute("code", PARAMET_ERROR);
request.setAttribute("message", "传递参数校验出错!");
return mapping.findForward("xmlLogonResult");
}
UserSession us=userManager.login(user.getId(), remoteIp);
request.setAttribute("logonName", user.getLogonName());
request.setAttribute("sessionId", us.getId());
request.setAttribute("naming", user.getNaming());
} else {
//没有这个用户
request.setAttribute("status", FAIL_TIP);
request.setAttribute("code", USER_NOT_EXIST);
request.setAttribute("message", "没有这个用户!");
return mapping.findForward("xmlLogonResult");
}
//登陆成功
request.setAttribute("status", SUCCESS_TIP);
return mapping.findForward("xmlLogonResult");
}
转向的最后的JSP页面,其实这个就是XML的模板:
<%@ include file="/common/taglibs.jsp"%>
<root>
<Status>${status}</Status>
<ErrorCode>${code}</ErrorCode>
<Message>${message}</Message>
<LogonName>${logonName}</LogonName>
<SessionId>${sessionId}</SessionId>
<Naming>${naming}</Naming>
</root>
HttpClient传递参数到某ACTION,ACTION调用后台处理好后,
把内容放到request里面,转向到某JSP或者VELOCITY页面,
页面,页面是XML格式的。HttpClient得到结果后,解析XML返回
这样的接口其实有点像前段时间做lazslo是遇到的页面和后台的交互问题。
UserLoginActionTest.java测试程序如下:
package com.megaeyes.ipcamera.test.service;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import com.megaeyes.ipcamera.test.util.XmlFileUtil;
public class UserLoginActionTest extends TestCase {
private static final String ACTION_URL = "http://192.168.10.103/test/UserLoginServiceAction.do?method=userLogonBackService";
public void testDumy() {
assertTrue(true);
}
public void testUserServiceLogon() {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(ACTION_URL);
method.addParameter("userId", "081");
method.addParameter("passWord", "luohua");
method.addParameter("timeStamp", "119874350464068663");
method.addParameter("userToken", "67b7388d0af1c6044a9dc1f7cb0728ef");
try {
client.executeMethod(method);
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
String returnStr = "";
try {
returnStr = method.getResponseBodyAsString();
} catch (IOException e1) {
e1.printStackTrace();
}finally{
//使用完成后要释放链接
method.releaseConnection();
}
Document doc = XmlFileUtil.getDocumentSaxByXmlStr(returnStr);
System.out.println("Status: " + XmlFileUtil.getStringValue("Status", doc));
System.out.println("ErrorCode: " + XmlFileUtil.getStringValue("ErrorCode", doc));
System.out.println("Message: " + XmlFileUtil.getStringValue("Message", doc));
System.out.println("LogonName: " + XmlFileUtil.getStringValue("LogonName", doc));
System.out.println("SessionId: " + XmlFileUtil.getStringValue("SessionId", doc));
System.out.println("Naming: " + XmlFileUtil.getStringValue("Naming", doc));
}
}
ACTION层的处理代码如下:
public ActionForward userLogonBackService(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
response.setHeader("P3P", "CP=CAO PSA OUR");
String userId = request.getParameter("userId");
String userToken = request.getParameter("userToken");
String timeStamp = request.getParameter("timeStamp");
String remoteIp = request.getRemoteAddr();
UserManager userManager = (UserManager) getBean("userManager");
UserVO user = userManager.getUserVOByID(userId);
if (user != null) {
if (!checkUserServiceInfo(userId, timeStamp, userToken, user)) {
//检查传递的参数出错
request.setAttribute("status", FAIL_TIP);
request.setAttribute("code", PARAMET_ERROR);
request.setAttribute("message", "传递参数校验出错!");
return mapping.findForward("xmlLogonResult");
}
UserSession us=userManager.login(user.getId(), remoteIp);
request.setAttribute("logonName", user.getLogonName());
request.setAttribute("sessionId", us.getId());
request.setAttribute("naming", user.getNaming());
} else {
//没有这个用户
request.setAttribute("status", FAIL_TIP);
request.setAttribute("code", USER_NOT_EXIST);
request.setAttribute("message", "没有这个用户!");
return mapping.findForward("xmlLogonResult");
}
//登陆成功
request.setAttribute("status", SUCCESS_TIP);
return mapping.findForward("xmlLogonResult");
}
转向的最后的JSP页面,其实这个就是XML的模板:
<%@ include file="/common/taglibs.jsp"%>
<root>
<Status>${status}</Status>
<ErrorCode>${code}</ErrorCode>
<Message>${message}</Message>
<LogonName>${logonName}</LogonName>
<SessionId>${sessionId}</SessionId>
<Naming>${naming}</Naming>
</root>