package com.walker.remote;
import com.walker.api.client.ResponseData;
import org.apache.hc.client5.http.cookie.CookieStore;
import java.util.Map;
/**
* 远程访问接口定义,系统最基本的核心接口之一。
* 通过该接口可以远程调用各种服务,如:socket、http、webservice等
* @author shikeying
* @date 2015-2-7
*
*/
public interface RemoteAccessor{
/**
* 同步远程服务调用。
* @param methodName
* @param simpleData
* @param jsonParameter
* @param responseData 给定一个响应对象的实例,如:new ResponseLogin()
* @return
*/
public abstract T requestTextSync(String methodName, Map simpleData,
String jsonParameter, ResponseData responseData);
/**
* 设置调用接口对传输内容的加密方式,可能有多种实现,需要调用方配置一个。
* 如果不设置,系统默认使用Base64
进行简单编码。
* @param byteCoder
*/
void setContentEncoder(AbstractByteCoder byteCoder);
/**
* 设置访问服务端的基础路径,如:http://www.abc.com:8080/app/request.do
* @param baseUrl
*/
void setBaseUrl(String baseUrl);
/**
* 设置客户端证书信息,双向认证使用
* @param doubleTrust
*/
void setDoubleTrust(DoubleTrust doubleTrust);
// public abstract void setTimeRecorder(TimeRecorder timeRecorder);
T requestTextSyncWithCookie(String methodName, Map simpleData, String jsonParameter, ResponseData responseData, CookieStore cookieStore);
T requestSyncDelete(String methodName, String jsonParameter, Map header, ResponseData responseData);
T requestSyncPut(String methodName, String jsonParameter, Map header, ResponseData responseData);
T requestSyncPost(String methodName, String jsonParameter, Map header, ResponseData responseData);
T requestSyncWithoutGet(String methodName, String jsonParameter, String methodType, Map header, ResponseData responseData);
T requestSync(String methodName, Map simpleData, String jsonParameter, String methodType, String contentType, Map header, ResponseData responseData);
/**
* 默认的提交json格式数据的参数名字,不能直接提交json,必须添加表单名称,
* 否则服务端无法接收参数。
*/
public static final String DEFALUT_FORM_DATA_NAME = "datas";
/**
* 响应返回的结果中以特殊标志开头的内容:此时表示http请求返回的不是html内容,而是重新跳转等额外信息
*/
public static final String RESPONSE_EXT_ID = "ext//";
}