Search in sources :

Example 1 with Request

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());
        }
    });
}
Also used : Response(org.nutz.http.Response) Request(org.nutz.http.Request) Method(java.lang.reflect.Method) InvocationHandler(java.lang.reflect.InvocationHandler) NutMap(org.nutz.lang.util.NutMap)

Example 2 with Request

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;
}
Also used : Request(org.nutz.http.Request)

Example 3 with Request

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;
}
Also used : Request(org.nutz.http.Request)

Example 4 with Request

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());
}
Also used : Response(org.nutz.http.Response) FileWriter(java.io.FileWriter) Request(org.nutz.http.Request) FilePostSender(org.nutz.http.sender.FilePostSender) File(java.io.File) BaseWebappTest(org.nutz.mvc.testapp.BaseWebappTest) Test(org.junit.Test)

Aggregations

Request (org.nutz.http.Request)4 Response (org.nutz.http.Response)2 File (java.io.File)1 FileWriter (java.io.FileWriter)1 InvocationHandler (java.lang.reflect.InvocationHandler)1 Method (java.lang.reflect.Method)1 Test (org.junit.Test)1 FilePostSender (org.nutz.http.sender.FilePostSender)1 NutMap (org.nutz.lang.util.NutMap)1 BaseWebappTest (org.nutz.mvc.testapp.BaseWebappTest)1