在softlayer Rest调用中如何处理"@" [英] how is '@' handled in the softlayer Rest calls

查看:78
本文介绍了在softlayer Rest调用中如何处理"@"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的用户ID"12345_name@company.com"中有一个'@',当在Rest Call中传递时,这会导致错误"Softlayer Access Denied".

{ "error":访问被拒绝.", "code":"SoftLayer_Exception_Public"

}

请提出解决此问题的方法. 如果可以,我们可以使用别名代替"12345_name@company.com"用户吗?

以下是我要拨打的其余电话.

https://12345_name@company.com :@ api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json?objectMask = mask [主机名;域; id; startCpus; maxCpuUnits; powerState;数据中心[name,longName]; maxMemory; powerState; createDate; hourlyBillingFlag; averageDailyPublicBandwidthUsage; billingItem [id,item [id,description] category [name,id],children [id,item [id,description],category [id,name]]]; networkComponents [状态,ipAddressBindings.ipAddress,id,networkId,primaryIpAddress,端口,最大速度]; networkVlans [subnets [ networkIdentifier,networkVlan.primaryRouter.hostname,cidr,网关,id,网络掩码,地址空间,networkVlanId,routingTypeName]]]

解决方案

有时为了避免使用特殊字符,有必要使用"基本身份验证",在这种情况下,您需要对用户名进行编码和apiKey,例如:

  • 用户名::123123_ruber@softlayer.com
  • apiKey::375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8

您需要编码:

  • 用户名空间 apiKey
  • 123123_ruber@softlayer.com 375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8

我推荐使用的一种编码工具: https://www.base64encode.org/

此处的示例编码为:

MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjp>

有必要在编码的凭据之前添加基本

基本MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZ>

然后,您可以像下面的示例一样添加"授权"作为标题(我使用了用于Chrome的Advanced Rest Client):

I have an '@' in my user id "12345_name@company.com" , this when passed in the Rest Call is causing the error "Softlayer Access Denied" .

{ "error": "Access Denied. ", "code": "SoftLayer_Exception_Public"

}

Please suggest ways to get around this. Can we use an Alias instead of the "12345_name@company.com" user if.

Below is the Rest call I am trying to make.

https://12345_name@company.com:@api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json?objectMask=mask[hostname;domain;id;startCpus;maxCpuUnits;powerState;datacenter[name,longName];maxMemory;powerState;createDate;hourlyBillingFlag;averageDailyPublicBandwidthUsage;billingItem[id,item[id,description],category[name,id],children[id,item[id,description],category[id,name]]];networkComponents[status,ipAddressBindings.ipAddress,id,networkId,primaryIpAddress,port,maxSpeed];networkVlans[subnets[networkIdentifier,networkVlan.primaryRouter.hostname,cidr,gateway,id,netmask,addressSpace,networkVlanId,routingTypeName]]]

解决方案

Sometimes it's necessary to use "Basic Authentication" in order to avoid special characters, in that case, you need to encode your username and apiKey, for example:

  • username: 123123_ruber@softlayer.com
  • apiKey: 375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8

you need to encode:

  • username space apiKey
  • 123123_ruber@softlayer.com 375f50232aaba2d002eca7bc5e9dc4f6a042a8a65982254df8

A tool I can recommend for encoding: https://www.base64encode.org/

Here the example encoded:

MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjg=

It's necessary to add Basic word before the credentials encoded

Basic MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjg=

Then you can add "authorization" as a header like the following example (I used Advanced Rest Client for Chrome):

这篇关于在softlayer Rest调用中如何处理"@"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆