【问题标题】:Auth with Unirest JAVA使用 Unirest JAVA 进行身份验证
【发布时间】:2014-11-09 03:11:12
【问题描述】:

我需要向执行补丁过程的 Web 应用程序执行请求。我向这个请求提供了它请求我的参数,但我不知道如何从我在补丁请求之前执行的登录请求中传递凭据。 我正在尝试从登录响应的标头中获取 cookie 数据并将其作为简单字符串提供给补丁请求,但我不确定这是否是正确的方法。 基本上我正在做的就是这个。

HttpResponse<JsonNode> respuesta = Unirest.post(urlLogin)
    .headers(headers)
    .fields(fields)
    .asJson();
JSONObject body = respuesta.getBody().getObject();
Headers headerBody = respuesta.getHeaders();
String tmp = headerBody.get("set-cookie").get(0);
this.cookie = "sd-touch-mode=false; ".concat(tmp.replace(";Path=/;HttpOnly",""));
Map<String,String> cabeceras = new HashMap<String, String>();
cabecera.put("Cookie", this.cookie);
HttpResponse<JsonNode> respuesta = Unirest.post(urlFixpack)
    .headers(headers)
    .fields(fields)
    .asJson();

我对获取和设置 cookie 数据的方式不满意,但我在文档中没有找到任何合适的方法。

谁能帮帮我。

谢谢。

【问题讨论】:

    标签: java cookies unirest


    【解决方案1】:

    在 Unirest 中,不支持 cookie 似乎是一个有意识的设计决定。来自pull-request that adds cookie support的cmets:

    REST API 应该是无状态的,所以我想避免在我们的主流客户端库中支持 cookie。但我会保持这个拉取请求开放,所以如果有人必须使用 cookie 访问 API,他将能够使用你的代码;)

    但是,如果没有测试,我的印象是playing with custom HTTP clients 应该可以工作。我会尝试类似的东西

    cookieStore = new org.apache.http.impl.client.BasicCookieStore();
    Unirest.setHttpClient(org.apache.http.impl.client.HttpClients.custom()
                                .setDefaultCookieStore(cookieStore)
                                .build());
    

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 2017-06-13
      • 2017-03-11
      相关资源
      最近更新 更多