贝宝REST API的Grails

问题描述:

获得访问令牌如何使用Grails中贝宝REST API的Grails

贝宝REST API
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \ 
    -H "Accept: application/json" \ 
    -H "Accept-Language: en_US" \ 
    -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \ 
    -d "grant_type=client_credentials" 

DOC:https://developer.paypal.com/webapps/developer/docs/integration/mobile/verify-mobile-payment/

我需要在Grails的认证令牌。它在终端工作没有任何问题。

我试图用HttpClient来实现,但是如何传递用户凭证。在上面的例子中指定-u uname:passHttpClient

+0

有没有原因不使用官方java rest-api-sdk – user190117

看来你正在使用基本认证验证(见how to set basic auth in curlthe client's section for Basic Auth in the Wikipedia)

Apache的HTTP客户端提供身份验证为你办理,但在这种情况下,它似乎更容易只是手动创建标题:

Request addBasicAuthHeader(String username, String password) { 
    return addBasicAuthHeader(createBasicAuth(username, password)) 
} 

Request addBasicAuthHeader(String headerValue) { 
    request.addHeader("Authorization", "Basic ${headerValue}") 
    return request 
} 

private String createBasicAuthHeader(String username, password) { 
    "$username:$password".toString().bytes.encodeBase64() 
} 

你可以调用任何的addBasicAuthHeader方法(也许他们适应您正在使用HttpClient的味道),让您可以从它的原始值加上基本认证头(你有curl-u标志)或来自一对用户名和密码。

+0

我添加了几个链接来说明我的假设以及如何计算基本auth头。我不确定如何精心设计更多,特别是没有任何代码可供您评论。 – Deigote

+0

感谢您的快速响应,我会尝试您的代码:) –