【问题标题】:WireMock proxying not returning any bodyWireMock 代理不返回任何正文
【发布时间】:2023-04-02 16:00:01
【问题描述】:

我的应用程序确实向 url 发布请求:

https://myserver.domain.com/authenticate/credentials

OkHttp 客户端拦截器显示我的标头:

11-17 10:10:56.780 3140-3304/com.myapp.debug D/OkHttp: Content-Type: 应用程序/x-www-form-urlencoded

11-17 10:10:56.780 3140-3304/com.myapp.debug D/OkHttp: 内容长度: 187

11-17 10:10:56.781 3140-3304/com.myapp.debug D/OkHttp:授权: 基本授权keyfortest5430593045903495034905==

11-17 10:10:56.781 3140-3304/com.myapp.debug D/OkHttp: email=testlogin%40gmail.com&password=test%4012&deviceId=1484564155&deviceLabel=Android%20SDK%20built%20for%20x86_64&deviceType=ANDROID&deviceVersion=23%20%28REL%29

我已经创建了独立的 WireMock 服务器,我想将每个 POST 请求从我的 APP 重定向到我的 WireMock 服务器。这就是我在请求定义中添加 *.JSON 的原因:

{
    "request": {
        "method": "POST",
        "urlPattern": ".*"
    },
    "response": {
        "proxyBaseUrl" : "https://myserver.domain.com/",
        "additionalProxyRequestHeaders": {
            "Authorization": "Basic authorisationkeyfortest5430593045903495034905==  "
        }
    }
}

我期望会发生什么:

当我将 Http 客户端的基本路径从 https://myserver.domain.com/ 更改为 http://myserveraddress.com/ 时,我的应用程序的每个请求都应该发送到我的 MockServer。并且根据上述 JSON 的 MockServer 应该将该请求代理/转发到 https://myserver.domain.com/ 并返回相同的响应 - 所以一切都应该正常工作。

会发生什么:

每个 POST 请求都返回状态 200,但正文为空。 (它应该返回经过身份验证的用户对象)


问题:有可能实现吗?我是不是做错了什么?

【问题讨论】:

    标签: android rest mocking wiremock


    【解决方案1】:

    尝试将您的正文添加到“__files”文件夹中并在“bodyFileName”中设置路径

    {
    "request": {
        "method": "POST",
        "urlPattern": ".*"
    },
    "response": {
        "proxyBaseUrl" : "https://myserver.domain.com/",
        "additionalProxyRequestHeaders": {
            "Authorization": "Basic authorisationkeyfortest5430593045903495034905==  "
        },
        "bodyFileName":".*.json"
    }
    

    在 JSON 文件中输入您的答案。例如:

    { "errorCode": 0, "errorMessage": "", "result": { "filed1":"value", "filed2":"value" } }

    【讨论】:

    • 这个body文件应该是什么样子的?它可以是任何带有 .json 扩展名的文件 - 即使是空文件,响应也会被覆盖?
    • 我已将准确的“bodyFileName”复制粘贴为您的,并从下面的代码中创建了 response.json。我仍然收到空的身体。顺便说一句,我确定我正在连接远程服务器,因为如果我删除带有“Authentication”标头的“additionalProxyRequestHeaders”,我得到 401,否则我有 200。
    猜你喜欢
    • 1970-01-01
    • 2010-11-06
    • 2011-06-15
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    相关资源
    最近更新 更多