use of org.nutz.http.Request in project nutz by nutzam.
the class JsonRPC method mapper.
/**
* 客户端. 用于生成一个代理接口的实例,透明访问json-rpc服务
* @param klass 需要代理的接口
* @param endpoint jsonrpc URL入口
* @param namespace 命名空间,非json-rpc标准,扩展用,不需要就传null
* @param timeout 超时设置,若永不超时,设置为-1
* @return 代理实例
*/
public static <T> T mapper(Class<T> klass, final String endpoint, final String namespace, final int timeout) {
return (T) Proxy.newProxyInstance(klass.getClassLoader(), new Class<?>[] { klass }, new InvocationHandler() {
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
NutMap jreq = new NutMap();
jreq.setv("jsonrpc", "2.0").setv("id", R.UU32()).setv("method", method.getName());
if (!Strings.isBlank(namespace)) {
jreq.put("namespace", namespace);
}
jreq.setv("params", args);
Request req = Request.create(endpoint, METHOD.POST);
req.setData(Json.toJson(jreq));
Response resp = Sender.create(req).setTimeout(timeout).send();
if (resp.isOK()) {
if (method.getReturnType() == Void.class)
return null;
return Json.fromJson(method.getGenericReturnType(), resp.getReader());
}
throw new RuntimeException("resp code=" + resp.getStatus());
}
});
}
use of org.nutz.http.Request in project nutz by nutzam.
the class BaseWebappTest method post.
public Response post(String path, String data) {
Request req = Request.create(getBaseURL() + path, METHOD.POST);
req.setData(data);
resp = Sender.create(req).send();
assertNotNull(resp);
return resp;
}
use of org.nutz.http.Request in project nutz by nutzam.
the class BaseWebappTest method post.
public Response post(String path, byte[] bytes) {
Request req = Request.create(getBaseURL() + path, METHOD.POST);
req.setData(bytes);
resp = Sender.create(req).send();
assertNotNull(resp);
return resp;
}
use of org.nutz.http.Request in project nutz by nutzam.
the class UploadTest method test_upload.
@Test
public void test_upload() throws Throwable {
Request req = Request.create(getBaseURL() + "/upload/image", METHOD.POST);
File f = File.createTempFile("nutz", "data");
FileWriter fw = new FileWriter(f);
fw.write("abc");
fw.flush();
fw.close();
req.getParams().put("file", f);
FilePostSender sender = new FilePostSender(req);
Response resp = sender.send();
assertEquals("image&3", resp.getContent());
}
Aggregations