【问题标题】:Android Espresso MockWebserver setting cookiesAndroid Espresso MockWebserver 设置 cookie
【发布时间】:2023-03-24 23:35:01
【问题描述】:

我尝试在我的 Android Instrumentationtest 中设置 cookie,如下所示:

  @Override
protected MockResponse onDispatch(RecordedRequest request) {
    if (request.getPath().startsWith("/?loginkulcs=")) {
        MockResponse response = new MockResponse()
                .setStatus(new BasicStatusLine(new ProtocolVersion("HTTP",1,1), 302, "Moved Temporarily").toString())
                .setHeaders(new Headers.Builder()
                        .add("Date", LocalDateTime.now().toString("ddd, dd MMM yyyy HH:mm:ss Z"))
                        .add("Server", "GlassFish Server Open Source Edition 3.1.2.2")
                        .add("X-Powered-By", "Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7)")
                        .add("Location","https://xxx.jsp")
                        .add("Content-Type","text/html;charset=ISO-8859-1")
                        .add("Content-Language","en-US")
                        .add("Content-Length","227")
                        .add("Keep-Alive","timeout=5, max=100")
                        .add("Connection", "Keep-Alive")
                        .add("Set-Cookie", String.format("session_id=%s; Path=/xxx_teszt/", SESSION_ID))
                        .add("Set-Cookie", "regisztralt=IGEN; Path=/xxx_teszt/")
                        .add("Set-Cookie", "session_id=2084e74283d5073c5f4d324f17e2; Path=/xxx_teszt; HttpOnly")
                        .build());
        return response;
    }
    return null;

}

android 客户端是一个 org.apache.http.impl.client.DefaultHttpClient,它会像这样读取 cookie:

client.getCookieStore().getCookies();

但结果为空。 如何为这个客户端设置 cookie?

谢谢

扎梅克

【问题讨论】:

    标签: android android-espresso mockwebserver


    【解决方案1】:

    它是Cookie 而不是Set-Cookie;见MockWebServerTest,例如:

    .addHeader("Cookie: " + String.format("session_id=%s; Path=/xxx_teszt/", SESSION_ID))
    

    【讨论】:

    • 对不起,原来是这样工作的,当我得到一个 302 代码时,cookie 有一个 sessionId。我不知道它是否符合标准,但我必须这样做。
    • @zamekz 您必须修复服务器端的标头,然后修复它的模拟。 302 之后的页面,然后发送 200 应该设置 cookie 标头。或者只运行一个测试,测试302 重定向和另一个测试重定向目标,它应该发送一个200
    • 我尝试设置返回码 200 而不是 302,但是 cookie 是空的:(
    • @zamekz 它实际上设置了任何标题?
    • 我只使用http。它在实时网络服务器中工作,我只想为此创建一个测试用例,因为我无法在实时网络服务器上生成测试数据。使用这些数据的实时网络服务器,我只是从实时数据中复制标题数据。实时网络服务器发送三个不同的cookie,我认为cookie应该是一个包含列表作为值的地图。
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    相关资源
    最近更新 更多