`

http请求测试实例(采用fastjson解析)

阅读更多

        在实际开发中,我们经常会去做http请求的开发,下面则是如何请求的单元测试小实例,仅供参考。

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import com.alibaba.fastjson.JSONObject;

public class TTest {
    
    private String serverURL = "http://serviceAddress/system";
    private String address = "/address/queryInfo";
    private String username = "lisi";
    private String password = "123";

    @Before
    public void setUp() throws Exception {
    }
    
    @Test
    public void queryInfo_test() throws Exception {
        Map<String, Object> paramMap = new HashMap<String, Object>();
        paramMap.put("queryName", "张三");
        paramMap.put("age", 30);
        String paramJson = JSONObject.toJSONString(paramMap);
        String result = httpConnectionWithAuth(serverURL, address, paramJson, username, password);
        //String result = httpConnectionWithNoAuth(serverURL, address, paramJson);
        JSONObject object = JSONObject.parseObject(result);
        Assert.assertEquals(object.get("result"), true);
    }
    
    /**
     * 带认证的请求
     */
    private String httpConnectionWithAuth(String url, String addr, String json, String un, String pw) throws Exception {
        System.out.println("请求参数:\r\n" + json);
        System.out.println("请求地址:" + url + addr);
        HttpClient client = new HttpClient();
        PostMethod postMethod = new PostMethod(url + "//j_security_check");

        NameValuePair[] param = { new NameValuePair("j_username", un), new NameValuePair("j_password", pw),
                new NameValuePair("SMAUTHREASON", "0") };

        postMethod.setRequestBody(param);
        client.executeMethod(postMethod);
        postMethod.releaseConnection();

        GetMethod method = new GetMethod(url + "/do/LoginController/login");
        client.executeMethod(method);

        long s = System.currentTimeMillis();
        postMethod = new PostMethod(url + addr);
        postMethod.setRequestBody(json);
        postMethod.addRequestHeader("Content-Type", "application/json;charset=UTF-8");
        client.executeMethod(postMethod);
        long t = System.currentTimeMillis();
        String result = postMethod.getResponseBodyAsString();
        System.out.println("执行时长:" + (t - s) + "ms");
        System.out.println("返回结果:" + JSONObject.parseObject(result));
        postMethod.releaseConnection();
        return result;
    }
    
    /**
     * 无需认证的请求
     */
    private String httpConnectionWithNoAuth(String url, String addr, String json) throws Exception {
        System.out.println("请求参数:\r\n" + json);
        System.out.println("请求地址:" + url + addr);
        HttpClient client = new HttpClient();

        long s = System.currentTimeMillis();
        PostMethod postMethod = new PostMethod(url + addr);
        postMethod.setRequestBody(json);
        postMethod.addRequestHeader("Content-Type", "application/json;charset=UTF-8");
        client.executeMethod(postMethod);
        long t = System.currentTimeMillis();
        String result = postMethod.getResponseBodyAsString();
        System.out.println("执行时长:" + (t - s) + "ms");
        System.out.println("返回结果:" + JSONObject.parseObject(result));
        postMethod.releaseConnection();
        return result;
    }
}

 

PS:依赖jar包见附件。

分享到:
评论

相关推荐

    springboot2.0整合fastjson以及各种使用实例

    1. **序列化和反序列化**:Fastjson能将Java对象转换为JSON字符串,也能将JSON内容解析为Java对象。这对于处理HTTP请求和响应中的JSON数据非常有用。 2. ** jsonObject与JSONArray**:`JSONObject`代表JSON对象,`...

    阿里巴巴fastjson的jar包

    例如,服务器接收到JSON格式的HTTP请求后,可以使用Fastjson解析并转换为Java对象;在前端发送请求时,也能快速将数据转换为JSON格式,便于传输。 总结来说,阿里巴巴的Fastjson是Java开发中处理JSON数据的得力工具...

    fastjson项目:Fastjson-master.zip

    3. **配置文件解析**:在微服务或框架中,使用Fastjson解析JSON格式的配置文件。 4. **移动开发**:在Android开发中,Fastjson因其轻量级和高效性,被广泛用于数据交换和序列化。 六、源码分析与扩展 Fastjson的...

    淘宝客Android源码,真正可以请求到数据的

    本源码提供了一个可以真正请求到数据的淘宝客应用实例,下面我们将深入探讨这些关键知识点。 1. **网络请求**: - Android中的网络请求通常使用HttpURLConnection、HttpClient或者第三方库如Retrofit、OkHttp等。...

    android okhttp网络框架

    总的来说,"android okhttp网络框架"提供了一个实用的网络请求框架,结合了OkHttp的高效网络请求和Fastjson的强大JSON解析能力,使得Android应用的网络通信更加便捷。开发者可以在此基础上进行二次开发,快速搭建...

    java短信验证jar 包

    6. **JSON反序列化**:如果响应体是JSON格式,使用Fastjson解析成Java对象,提取相关信息。 7. **编码解码**:如有必要,使用Commons Codec进行编码解码操作,如解密接收到的验证码。 在实际开发中,还需要注意以下...

    淘宝API重新封装

    7. **设计模式**:良好的封装往往依赖于合理的设计模式,例如工厂模式用于创建API实例,单例模式确保全局只有一个HTTP客户端,装饰器模式可以动态添加请求头或参数。 8. **测试**:封装完成后,单元测试和集成测试...

    Android源码——城市天气预报源码.7z

    Android城市天气预报源码是一个典型的移动应用开发实例,它结合了网络请求、数据解析、UI展示等多个关键技术环节,对于深入理解Android开发具有重要价值。本篇将详细剖析这个源码项目,探讨其核心技术和实现方式。 ...

    SpringCloud Zuul网关功能实现解析

    Zuul 网关可以实现 AB 测试,也就是说, Zuul 可以将客户端的请求路由到不同的微服务实例,以便于测试和比较不同的版本。 灰度测试 Zuul 网关可以实现灰度测试,也就是说, Zuul 可以将客户端的请求路由到不同的...

    Android 高仿京东商城源码.zip

    项目可能采用了HttpURLConnection、OkHttp或者Volley等网络库进行HTTP请求,实现登录注册、商品搜索、购物车操作等功能。同时,需要处理异步请求,防止阻塞主线程,通常会使用AsyncTask或者RxJava进行后台任务处理。...

    『若水新闻』客户端开发教程全部源码

    【若水新闻】客户端可能通过这些库获取新闻API的数据,然后使用Gson、Jackson或Fastjson进行JSON解析,将数据转化为Java对象。 三、MVVM架构 现代Android开发倾向于采用MVVM(Model-View-ViewModel)架构,这有利于...

    mvp+okgo最简单demo拉起来就用新加接口嵌套调用

    5. **自动转换**:通过Gson、FastJson等库,OkGo可以自动将JSON字符串转换为Java对象,简化了数据解析过程。 在"mvp+okgo最简单demo"中,我们可能看到以下实现: 1. **创建Presenter**:定义一个接口,包含需要...

    基于Android studio的简易天气预报APP源代码,大学生实训项目

    Android Studio自带Gson库或使用其他如Jackson、FastJSON等第三方库进行解析。例如,开发者会创建一个WeatherData类,包含日期、温度、湿度等字段,然后将JSON字符串转换为此类的实例。 【数据持久化】 为了在APP...

    JSON-Parsing:在RecyclerView中使用翻新并使用Glide库加载图像的JSON解析

    Retrofit将HTTP请求转换为Java方法,使得API调用变得直观且易于测试。在配置Retrofit时,我们需要定义一个服务接口,其中的方法对应于HTTP操作(GET、POST等),并注解上URL路径和请求参数。Retrofit还会自动处理...

    Android应用源码之仿淘宝购买商品,主页后缩.zip

    同时,还需要对JSON数据进行解析,可能使用了Gson、Jackson或Fastjson等库。 6. **异步处理和LiveData**: 为了确保用户体验,网络请求和数据处理应在后台线程中进行。项目可能使用了Android的AsyncTask、Handler...

    Android应用源码之LivingHelper_LivingHelper.zip

    同时,源码可能包含了对JSON数据的解析,可能使用Gson、Jackson或Fastjson等库,了解这些可以帮助我们更有效地处理网络数据。 5. **异步处理与线程管理** Android应用的性能优化往往离不开对线程的合理管理。源码...

    android豆瓣手机客户端源码.zip

    5. **依赖注入**:为了提高代码的可测试性和解耦,豆瓣客户端可能采用了Dependency Injection(DI)框架,如Dagger或Koin。这些框架帮助管理组件间的依赖关系,使代码更加模块化。 6. **缓存策略**:对于频繁访问的...

    struts1+spring+hibernate 整合jar包

    Fastjson是阿里巴巴开发的一个高性能的JSON库,它可以将Java对象转换为JSON字符串,也可以将JSON内容解析为Java对象。在开发中,Fastjson常用于前后端数据交换,提供高效的序列化和反序列化能力。 MySQL是一个广泛...

    java rpc_demo

    这个“java rpc_demo”项目显然是一个用于演示RPC基本概念和实现的实例。现在我们来深入探讨RPC以及如何通过这个“demo.rpc”文件来理解和学习它。 首先,我们需要理解RPC的基本工作原理。RPC使得客户端能够透明地...

Global site tag (gtag.js) - Google Analytics