当前位置:首页 > CN2资讯 > 正文内容

【MOCK】mockserver作为代理

2天前CN2资讯

使用MockServer分析现有系统,请执行以下操作:

  • 启动MockServer
  • 配置客户端
  • 运行方案
  • 分析行为


使用MockServer验证请求,请执行以下操作:

  • 启动MockServer
  • 配置客户端
  • 运行测试方案
  • 验证请求

官方给的示例可以在github上拿到


​​https:///mock-server/mockserver/tree/master/mockserver-examples​​


我们可以看到,更新还是很及时的。

启动MockServer

能够运行的方式有:

为了简化配置,所有版本(可部署WAR除外)都使用单个端口来支持HTTP、HTTPS或SOCKS中的控制平面和数据平面

可以以以下的方式调用

MockServer将客户端配置为代理请求,并包括以下客户端的代码示例:

  • Java JDK HttpURLConnection
  • Apache HttpClient
  • Spring RestTemplate
  • Spring WebClient
  • Google HTTP Client
  • Jetty HttpClient
  • Jersey Client
  • Grizzly AsyncHttpClient
  • Apple Mac HTTP & HTTPS (i.e. Chrome, Safari, Firefox, etc)

我们用Spring RestTemplate举例:

使用Apache HttpClient配置Web或安全Web代理,如下所示:

HttpHost httpHost = new HttpHost(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort")));
DefaultProxyRoutePlanner defaultProxyRoutePlanner = new DefaultProxyRoutePlanner(httpHost);
HttpClient httpClient = HttpClients.custom().setRoutePlanner(defaultProxyRoutePlanner).build();

测试代码如下:

package org.mockserver.examples.proxy.service.apacheclient;


import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.conn.routing.HttpRoutePlanner;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;
import org.apache.http.util.EntityUtils;
import org.mockserver.examples.proxy.model.Book;
import org.mockserver.examples.proxy.service.BookService;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;


import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.nio.charset.StandardCharsets;


import static org.mockserver.examples.proxy.json.ObjectMapperFactory.createObjectMapper;


/**
* @author jamesdbloom
*/
@Component
public class BookServiceApacheHttpClient implements BookService {


@Resource
private Environment environment;
private Integer port;
private String host;
private ObjectMapper objectMapper;
private HttpClient httpClient;


@PostConstruct
private void initialise() {
port = Integer.parseInt(System.getProperty("bookService.port"));
host = environment.getProperty("bookService.host", "localhost");
objectMapper = createObjectMapper();
httpClient = createHttpClient();
}


private HttpClient createHttpClient() {
HttpHost httpHost = new HttpHost(System.getProperty("http.proxyHost"), Integer.parseInt(System.getProperty("http.proxyPort")), "http");
HttpRoutePlanner defaultProxyRoutePlanner = new DefaultProxyRoutePlanner(httpHost);
return HttpClients.custom().setRoutePlanner(defaultProxyRoutePlanner).build();
}


public Book[] getAllBooks() {
String responseBody;
try {
HttpResponse response = httpClient.execute(new HttpGet(new URIBuilder()
.setScheme("http")
.setHost(host)
.setPort(port)
.setPath("/get_books")
.build()));
responseBody = new String(EntityUtils.toByteArray(response.getEntity()), StandardCharsets.UTF_8);
} catch (Exception e) {
throw new RuntimeException("Exception making request to retrieve all books", e);
}
try {
return objectMapper.readValue(responseBody, Book[].class);
} catch (Exception e) {
throw new RuntimeException("Exception parsing JSON response [" + responseBody + "]", e);
}
}


public Book getBook(String id) {
try {
HttpResponse response = httpClient.execute(new HttpGet(new URIBuilder()
.setScheme("http")
.setHost(host)
.setPort(port)
.setPath("/get_book")
.setParameter("id", id)
.build()));
return objectMapper.readValue(EntityUtils.toByteArray(response.getEntity()), Book.class);
} catch (Exception e) {
throw new RuntimeException("Exception making request to retrieve a book with id [" + id + "]", e);
}
}
}

这个是代理了一个本地的叫bookservice的服务,当然,也可以根据实际业务情况进行代理其它服务器上的http服务。

Apple Mac HTTP和HTTPS(即Chrome、Safari、Firefox等)

Apple Mac可以配置为通过代理发送所有HTTP或HTTPS请求。这是在“系统首选项”>“网络”>“高级”>“代理”中的代理设置中完成的,如下所示:


关注公众号 soft张三丰 


    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/32229.html

    分享给朋友:

    “【MOCK】mockserver作为代理” 的相关文章

    检查自己的IP地址:全面掌握网络安全与故障排查技巧

    检查自己的IP地址的重要性 我常常感受到,了解自己的IP地址是使用互联网时不可或缺的一部分。无论是日常上网还是进行复杂的网络设置,IP地址都扮演着关键角色。所以,搞清楚自己的IP地址,真的非常重要。 那么,什么是IP地址呢?简单来说,IP地址是分配给每台连接到互联网设备的唯一标识符。它就像我们的家庭...

    便宜的国外主机推荐:性价比高的主机选择指南

    在选择国外主机服务时,价格通常是一个重要的考量因素。面对纷繁复杂的选择,我发现一些便宜且性能不错的国外主机服务,让我大为惊喜。这里,我想和大家分享几款我认为性价比非常高的国外主机。 首先,我接触到UCloud。它的起售价为34元一个月,提供包括云服务器、GPU服务器和裸金属服务器在内的多种产品。这种...

    Vultr DD Windows安装教程:轻松一步到位

    在云计算越来越流行的今天,Vultr作为一个强大的云服务提供商,吸引了大量用户。对于想在Vultr服务器上安装Windows的用户来说,使用DD命令是一种非常便利的方法。接下来,我将为你详细介绍如何通过这一方式在Vultr上安装Windows。 1.1 使用DD命令直接安装Windows 1.1.1...

    电信163回程路由怎么样?性能与用户体验全解析

    电信163回程路由的基本概况 在了解电信163回程路由之前,首先让我来解释一下它到底是什么。电信163回程路由是中国电信所提供的一种数据传输路径,主要用于支撑用户从国外访问中国国内的数据流。这条路由有助于保证数据在传输过程中的稳定性与可靠性,因此对于使用网络服务的企业或个人尤为重要。 电信163回程...

    反向代理的工作原理与应用场景详解

    反向代理概述 反向代理,听起来似乎有点复杂。实际上,这是一个位于客户端和服务器之间的“中间人”,它对客户端是透明的。换句话说,客户端并不知道有这个反向代理的存在。它的主要任务是接收客户端的请求,然后把这些请求转发给后端的服务器,再把服务器的响应返回给客户端。想象一下,反向代理就像一个邮递员,负责将信...

    砖瓦工VP:提升技能与职业发展的关键

    在建筑行业中,砖瓦工VP(职业资格)是一个至关重要的概念,它不仅代表了砖瓦工的专业技能水平,也是一种行业标准。砖瓦工VP体现的是从业者在砖瓦铺设、墙体构建、维修保养等方面的能力和知识。这种职业资格的获得,意味着砖瓦工通过了相关的培训和考核,具备了足够的从业资格,有助于提升自身的职业价值和市场竞争力。...