使用URIBuilder的Azure Rate Card api查询

时间:2017-11-08 01:40:53

标签: powershell azure groovy uri uribuilder

我无法在grrovy脚本中使用URIBuilder正确构建URL。这就是文档说它看起来应该是什么 -

  

https://management.azure.com/subscriptions/ {subscription-Id} /providers/Microsoft.Commerce/RateCard?api-version= {api-version}& $ filter = OfferDurableId eq'{OfferDurableId}'和Currency eq'{Currency} '和Locale eq'{Locale}'和RegionInfo eq'{RegionInfo}''

我的代码 -

def urlRATECARD = 'https://management.azure.com/subscriptions/xxxx-xxxx-xxxx-xxxx/providers/Microsoft.Commerce/RateCard'

def uriRATECARD = new URIBuilder(urlRATECARD)

uriRATECARD.addQueryParam 'api-version','2015-06-01-preview'
uriRATECARD.addQueryParam '$filter', 'OfferDurableId eq`0003P`and Locale eq `en-AU` and Regioninfo eq `AU` and Currency eq `AUD`'

输出 -

  

https://management.azure.com/subscriptions/xxxx-xxxx-xxxx-xxxx/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&%24filter=OfferDurableId+eq%600003P%60and+Locale+eq+%60en-AU%60+and+Regioninfo+eq+%60AU%60+and+Currency+eq+%60AUD%60

失败并出现以下错误 -

  

[消息:指定的查询无效。请为OfferDurableId,Currency,Locale和RegionInfo指定有效值。]

有人能提供正确的方法来创建吗?

2 个答案:

答案 0 :(得分:1)

我使用$ filter标题的美元斜线字符串解决了这个问题 -

def urlRATECARD = 'https://management.azure.com/subscriptions/xxxx-xxxx-xxxx-xxxx/providers/Microsoft.Commerce/RateCard'
def uriRATECARD = new URIBuilder(urlRATECARD)
String Filter = $/OfferDurableId eq 'MS-AZR-0003p' and Locale eq 'en-AU' and Regioninfo eq 'AU' and Currency eq 'AUD'/$

uriRATECARD.addQueryParam 'api-version','2015-06-01-preview'
uriRATECARD.addQueryParam '$filter', Filter

创建以下内容 -

  

https://management.azure.com/subscriptions/xxxx-xxxx-xxxx-xxxx/providers/Microsoft.Commerce/RateCard?api-version=2015-06-01-preview&%24filter=OfferDurableId+eq+%27MS-AZR-0003p%27+and+Locale+eq+%27en-AU%27+and+Regioninfo+eq+%27AU%27+and+Currency+eq+%27AUD%27

答案 1 :(得分:0)

如果您的订阅为Pay-As-You-Go,则OfferDurableIdMS-AZR-0003p

您可以在example之前检查此OFFER NUMBER,它需要添加MS-AZR-