【问题标题】:Find out how Postman request is constructed and replicate in java了解 Postman 请求是如何在 Java 中构造和复制的
【发布时间】:2017-02-23 23:33:48
【问题描述】:

我正在使用 Postman 发出 GET 请求。作为请求的一部分,我选择了AuthorizationBasic Auth,然后填写了我的用户名和密码。

请求成功。现在,我想在 Java 代码中复制它。

在 Java 中我试过这个:

URL myURL = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();
String userCredentials = "username:password";
myURLConnection.setRequestProperty ("Authorization", userCredentials);

虽然这看起来和 Postman 做的很相似,但它不起作用。

如何在 Java 中复制上述 Postman 请求?

【问题讨论】:

  • 您就不能研究一下基本身份验证的工作原理吗?喜欢阅读:code.tutsplus.com/tutorials/…
  • 我不知道 Postman,但很容易猜到它可以让您导出它制作的 HTTP 请求。检查此输出以了解您应该设置哪些数据。另外我认为你应该设置一个标头字段而不是一个请求属性。
  • 正如汤姆链接中的内容指出的那样,标头需要对用户名>密码进行base64编码以进行基本身份验证。

标签: java rest postman


【解决方案1】:

Postman UI 上有一个链接,可以使用 OkHttpUnirest 为 Java 或其他语言和库生成代码 sn-ps。

第 1 步

第 2 步

【讨论】:

  • 那么.addHeader("authorization", "Basic ems2djsSFSSF4madJDA==")的部分,这段代码是怎么生成的呢?如果我使用相同的用户名和密码,在 Postman 和其他环境中是否相同?
  • @octavian,您将根据您的身份验证方案将凭据提供给您正在使用的任何库,例如,请参阅square.github.io/okhttp/3.x/okhttp。或者,您可以自己将凭证编码为 base 64。 Java 8:java.util.Base64.getEncoder().encodeToString((userCredentials).getBytes(‌​));
【解决方案2】:

正如this article(“基本身份验证如何工作”一章)所指出的,标头需要对用户名:密码进行base64 编码以进行基本身份验证。

在 Postman 中,您可以在标头的批量编辑中看到编码值:

您可以查找 Java 自己的 Base64 实用程序类来执行此操作。

编辑

如果您使用 Java 的 OkHttpUnirest 框架,则可以使用bn. 下划线的解决方案来快速使用现成的代码模板,而不是“手动”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多