[android]代码库
/**
* 客户端代理,用于Android调用后台EJB
* @author feige
*
*/
public class ClientProxy {
//服务器端响应客户请求的URL
private static String baseResourceURL = ClientConfig.AEP_RESOURCE_URL;
private static String brokerURL = ClientConfig.AEP_BROKER_URL;
//private static String brokerURL = "http://192.168.2.203:8080/aep/MobileBroker";
/**
* 调用远端EJB
* @param remoteClass 要查找对象的接口class对象(EJB的remote接口)
* @param beanName 要查找对象的bean名称,一般就是EJB实现类的名称,除非你用@EJB标注重新命名
* @param methodName 要调用的方法名称
* @param paras 调用所需的参数
* @return
*/
public Object call(Class remoteClass,String beanName,String methodName,Object... paras){
HttpURLConnection urlConn = null;
try{
URL postUrl = getRequestURL();
if(postUrl == null)
return null;
//创建一个链接
urlConn = (HttpURLConnection)postUrl.openConnection();
//设置是否向httpUrlConnection输出,因为我们要通过序列化对象把调用参数发送给后台,这里要设置成true;
urlConn.setDoOutput(true);
// 设置是否从httpUrlConnection读入,默认情况下是true; 我们需要读入返回结果的序列化文件
urlConn.setDoInput(true);
//设置请求方式,这里设置为POST请求
urlConn.setRequestMethod("POST");
//设置是否使用缓存,post请求不能使用缓存
urlConn.setUseCaches(false);
//设置只作用于当前的实例
urlConn.setInstanceFollowRedirects(true);
//设定传送的内容类型是可序列化的java对象
urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlConn.setConnectTimeout(15*1000);
//打开连接
// urlConn.connect();
//数据输出流,该语句隐含的执行connect动作
//DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
//将参数写入流,刷新提交关闭流
writeMobileDTO(urlConn,remoteClass,beanName,methodName,paras);
Object result = getResponseObject(urlConn);
return result;
}catch(Exception e){
e.printStackTrace();
}finally{
if(urlConn != null)
urlConn.disconnect();
}
return null;
}