在实际开发中,我们经常会去做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包见附件。
相关推荐
1. **序列化和反序列化**:Fastjson能将Java对象转换为JSON字符串,也能将JSON内容解析为Java对象。这对于处理HTTP请求和响应中的JSON数据非常有用。 2. ** jsonObject与JSONArray**:`JSONObject`代表JSON对象,`...
例如,服务器接收到JSON格式的HTTP请求后,可以使用Fastjson解析并转换为Java对象;在前端发送请求时,也能快速将数据转换为JSON格式,便于传输。 总结来说,阿里巴巴的Fastjson是Java开发中处理JSON数据的得力工具...
3. **配置文件解析**:在微服务或框架中,使用Fastjson解析JSON格式的配置文件。 4. **移动开发**:在Android开发中,Fastjson因其轻量级和高效性,被广泛用于数据交换和序列化。 六、源码分析与扩展 Fastjson的...
本源码提供了一个可以真正请求到数据的淘宝客应用实例,下面我们将深入探讨这些关键知识点。 1. **网络请求**: - Android中的网络请求通常使用HttpURLConnection、HttpClient或者第三方库如Retrofit、OkHttp等。...
总的来说,"android okhttp网络框架"提供了一个实用的网络请求框架,结合了OkHttp的高效网络请求和Fastjson的强大JSON解析能力,使得Android应用的网络通信更加便捷。开发者可以在此基础上进行二次开发,快速搭建...
6. **JSON反序列化**:如果响应体是JSON格式,使用Fastjson解析成Java对象,提取相关信息。 7. **编码解码**:如有必要,使用Commons Codec进行编码解码操作,如解密接收到的验证码。 在实际开发中,还需要注意以下...
7. **设计模式**:良好的封装往往依赖于合理的设计模式,例如工厂模式用于创建API实例,单例模式确保全局只有一个HTTP客户端,装饰器模式可以动态添加请求头或参数。 8. **测试**:封装完成后,单元测试和集成测试...
Android城市天气预报源码是一个典型的移动应用开发实例,它结合了网络请求、数据解析、UI展示等多个关键技术环节,对于深入理解Android开发具有重要价值。本篇将详细剖析这个源码项目,探讨其核心技术和实现方式。 ...
Zuul 网关可以实现 AB 测试,也就是说, Zuul 可以将客户端的请求路由到不同的微服务实例,以便于测试和比较不同的版本。 灰度测试 Zuul 网关可以实现灰度测试,也就是说, Zuul 可以将客户端的请求路由到不同的...
项目可能采用了HttpURLConnection、OkHttp或者Volley等网络库进行HTTP请求,实现登录注册、商品搜索、购物车操作等功能。同时,需要处理异步请求,防止阻塞主线程,通常会使用AsyncTask或者RxJava进行后台任务处理。...
【若水新闻】客户端可能通过这些库获取新闻API的数据,然后使用Gson、Jackson或Fastjson进行JSON解析,将数据转化为Java对象。 三、MVVM架构 现代Android开发倾向于采用MVVM(Model-View-ViewModel)架构,这有利于...
5. **自动转换**:通过Gson、FastJson等库,OkGo可以自动将JSON字符串转换为Java对象,简化了数据解析过程。 在"mvp+okgo最简单demo"中,我们可能看到以下实现: 1. **创建Presenter**:定义一个接口,包含需要...
Android Studio自带Gson库或使用其他如Jackson、FastJSON等第三方库进行解析。例如,开发者会创建一个WeatherData类,包含日期、温度、湿度等字段,然后将JSON字符串转换为此类的实例。 【数据持久化】 为了在APP...
Retrofit将HTTP请求转换为Java方法,使得API调用变得直观且易于测试。在配置Retrofit时,我们需要定义一个服务接口,其中的方法对应于HTTP操作(GET、POST等),并注解上URL路径和请求参数。Retrofit还会自动处理...
同时,还需要对JSON数据进行解析,可能使用了Gson、Jackson或Fastjson等库。 6. **异步处理和LiveData**: 为了确保用户体验,网络请求和数据处理应在后台线程中进行。项目可能使用了Android的AsyncTask、Handler...
同时,源码可能包含了对JSON数据的解析,可能使用Gson、Jackson或Fastjson等库,了解这些可以帮助我们更有效地处理网络数据。 5. **异步处理与线程管理** Android应用的性能优化往往离不开对线程的合理管理。源码...
5. **依赖注入**:为了提高代码的可测试性和解耦,豆瓣客户端可能采用了Dependency Injection(DI)框架,如Dagger或Koin。这些框架帮助管理组件间的依赖关系,使代码更加模块化。 6. **缓存策略**:对于频繁访问的...
Fastjson是阿里巴巴开发的一个高性能的JSON库,它可以将Java对象转换为JSON字符串,也可以将JSON内容解析为Java对象。在开发中,Fastjson常用于前后端数据交换,提供高效的序列化和反序列化能力。 MySQL是一个广泛...
这个“java rpc_demo”项目显然是一个用于演示RPC基本概念和实现的实例。现在我们来深入探讨RPC以及如何通过这个“demo.rpc”文件来理解和学习它。 首先,我们需要理解RPC的基本工作原理。RPC使得客户端能够透明地...