2

我在 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 指定有效值。]

任何人都可以提供正确的方法来创建这个吗?

4

2 回答 2

2

我使用 $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

于 2017-11-08T05:17:17.580 回答
0

如果您的订阅是Pay-As-You-GoOfferDurableIdMS-AZR-0003p

你可以检查这个例子,之前OFFER NUMBER,它需要添加MS-AZR-

于 2017-11-08T02:15:58.707 回答