【问题标题】:Can't simulate Postman request in Java无法在 Java 中模拟 Postman 请求
【发布时间】:2019-06-07 06:19:54
【问题描述】:

我正在尝试登录门户。它使用邮递员工作。当我使用纯 Java 或 OkHttp 尝试相同的请求时,登录失败,我将被重定向到登录页面。

    HttpUrl.Builder httpBuilder = HttpUrl.parse("https://test58.cashctrl.com/auth/login.html").newBuilder();
    httpBuilder.addQueryParameter("JMCF_AUTH_EMAIL", "email");
    httpBuilder.addQueryParameter("JMCF_AUTH_PASSWORD", "password");

    Request request = new Request.Builder()
            .url(httpBuilder.build())
            .get()
            .build();

我知道 URL 看起来很奇怪,但它使用 Postman 或什至只是使用浏览器以这种方式工作。

我尝试过的纯 Java 替代方案:

    Map<String, String> parameters = new HashMap<>();
    parameters.put(PARAM_EMAIL, EMAIL);
    parameters.put(PARAM_PASSWORD, PASSWORD);


    URL url = new URL(LOGIN_URL + "?" + ParameterStringBuilder.getParamsString(parameters));
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("POST");
    con.setInstanceFollowRedirects(true);


    con.setDoOutput(true);
    DataOutputStream out = new DataOutputStream(con.getOutputStream());
    out.writeBytes(ParameterStringBuilder.getParamsString(parameters));
    out.flush();
    out.close();

    int status = con.getResponseCode();

    BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    String inputLine;
    StringBuffer content = new StringBuffer();
    while ((inputLine = in.readLine()) != null) {
        content.append(inputLine + "\n");
    }
    in.close();

    con.disconnect();
    System.out.println(status);
    System.out.println(content.toString());

邮递员一定是在做一些特别的事情,或者是我看不到的浏览器。

【问题讨论】:

  • 请尝试将Content-Type 添加到HttpURLConnection con 对象
  • 这并没有什么不同
  • 您可以发布任何日志吗?
  • 第一个例子是 GET,第二个是 POST。邮递员在做什么?
  • 在 Postman 中,Get 和 Post 工作。好吧,没有日志只是一个响应,在邮递员中我从门户网站获得响应,在 Java 中我再次获得登录页面。

标签: java postman okhttp3


【解决方案1】:

我有同样的问题,我知道 Postman 有“代码”功能。在发送按钮下方,您可以看到代码选项,它将为您生成代码。有一个语言列表可供选择,java 就是其中之一。一定要检查一下。此外,您必须缺少 cookie,请参阅 Postman 中的临时标头将所有内容添加到您的代码中,并包含 cookie 之一。

谢谢,希望对你有帮助。

【讨论】:

  • 好评论,不是好答案。这并不能解释当前代码的问题。
  • 我本来打算发表评论,但没有足够的声誉 :) 现在我可以因为这个upvote。
猜你喜欢
  • 1970-01-01
  • 2015-03-15
  • 2021-06-21
  • 2020-06-19
  • 2021-10-29
  • 2011-04-20
  • 1970-01-01
  • 2019-11-04
  • 2013-10-02
相关资源
最近更新 更多