无法在Java中模拟Postman请求

时间:2019-01-12 16:29:24

标签: java postman okhttp3

我正在尝试登录门户。它可以使用邮递员工作。当我使用纯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();

我知道网址看起来很奇怪,但是使用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());

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

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我知道邮递员具有“代码”功能。在发送按钮下方,您可以看到代码选项,它将为您生成代码。有多种语言可供选择,java是其中之一。请检查一下。另外,您必须缺少Cookie,请参阅Postman中的临时标头将所有代码添加到代码中,并包含一个cookie。

谢谢,希望对您有帮助。