2016-07-11 35 views
1

使用play-ws 2.4.6和NingWSClient,是否可以在Authentication标头中设置领域?我正在尝试打击NetSuite的REST 1.0 API,该API需要设置OAuth领域参数。玩斯卡拉WS Oauth 1.0 - 如何设置领域oauth参数?

这是我目前使用的一些示例代码:

val requestToken = RequestToken("*****", "*****") 
val consumerKey = ConsumerKey("*****", "*****") 
val oauthCalc = OAuthCalculator(consumerKey, requestToken) 

val request: WSRequest = ws.url("https://rest.na1.netsuite.com/app/site/hosting/restlet.nl?script=554&deploy=1") 
    .withHeaders("Content-Type" -> "application/json").sign(oauthCalc) 
request.get() 

NetSuite公司不无境界承认的OAuth要求,报告:USER_ERROR头不是NLAuth方案。使用邮差休息应用程序时,我可以在没有提供领域时从NetSuite重现相同的错误。然后,当在邮递员中添加领域时,请求成功完成。

+0

Oauth 1或2?另外,我认为你可以手动设置领域作为授权标题 – TonyH

+0

Oauth 1.0的一部分。在授权标头中手动设置领域时,.sign方法将覆盖授权标头并且不会附加到它。我能够通过自己创建HMAC-SHA1签名来解决此问题,并手动构建Authorization标头而不是使用.sign方法。 – awells

回答

0

我能够通过自己创建HMAC-SHA1签名来解决此问题,并手动构建Authorization标头而不是使用.sign方法。

+0

我很好奇,如果你想过如何在没有手动构建标题的情况下添加领域? – shuttj

+0

是的,我最终扩展了OAuthCalculator和OAuthSignatureCalculator类,以便可以将领域参数传递给它们。然后在OAuthSignatureCalculator中,您可以重写calculateAndAddSignature方法,以便您可以将域领域追加到headerValue字符串。必须重写OAuthSignatureCalculator的私有constructAuthHeader方法,以便我可以在扩展的OAuthSignatureCalculator中使用它。 – awells