json - -d 和 -u 参数的含义(和提供方法)是什么?
问题描述
我正在尝试使用 Scala 中的 Playframework 进行 WS GET 调用以调用 Paypal REST JSON API。我更具体地说是尝试获取初始的 Paypal 访问令牌:
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "client_id:secret" \
-d "grant_type=client_credentials"
我通过以下方式在 Scala 中构建它:
@Inject(ws: WSClient)
val url = config.get[String]("paypal.url.token") // https://api.sandbox.paypal.com/v1/oauth2/token
val httpHeaders = Array(
"Accept" -> "application/json",
"Accept-Language" -> "en_US"
)
val username = config.get[String]("paypal.client_id")
val password = config.get[String]("paypal.secret")
val request: WSRequest = ws.url(url).withHttpHeaders(httpHeaders: _*).
withRequestTimeout(timeout).
withAuth(username, password, WSAuthScheme.BASIC)
val futureResponse = request.get()
futureResponse.map { response =>
println(response.json)
}
我在这里假设-u
原始curl
样本中的意思和对应,withAuth
但我不知道-d
forgrant_type=client_credentials
对应什么?
当我像现在这样运行它时,我收到以下错误:
{"error":"invalid_token","error_description":"Authorization header does not have valid access token"}
还有一些在日志之前:
[info] p.s.a.o.a.n.h.i.Unauthorized401Interceptor - Can't handle 401 as auth was already performed
解决方案
您可以使用 阅读curl
手册man curl
。
所以,1)-u
代表--user <username:passsword>
-u, --user <user:password> Specify the user name and password to use for server authentication. Overrides -n, --netrc and --netrc-optional. If you simply specify the user name, curl will prompt for a password.
这也转化为-H "Authorization: <Basic|Bearer> base64_for_username:password"
2)-d
表示--data
POST 请求的 or 有效载荷。
-d, --data <data> (HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the con- tent-type application/x-www-form-urlencoded. Compare to -F, --form.
- 验证
withAuth(username, password, WSAuthScheme.BASIC)
正在使用正确的用户名、密码 - 并在代码中缺少的 scala 中设置帖子正文。我不太了解playframework,但这可能是正确的方法-https://www.playframework.com/documentation/2.6.3/api/java/play/libs/ws/WSRequest.html#post-java.lang 。细绳-
推荐阅读
- javascript - 为什么我的异步函数返回 Uncaught TypeError: (intermediate value) is not iterable
- wordpress - 离子和 wordpress 与子域的集成
- shopify - 如何将收藏畅销相关产品添加到 Shopify 购物车页面
- javascript - 无法从 node.js 中的应用程序文件调用本地模块
- javascript - 使用相同的循环执行太多命令
- python - 如何获取图像的图像大小并使用它来命名图像
- angular - 如何在 Angular 中安装 Bulma?
- reactjs - 如何在反应中有一个带有空格的 process.env 变量
- swiftui - ipad下如何防止DoubleColumnNavigationView被折叠
- windows - 有什么方法可以让 Windows 认为我总是连接到 Internet?