如何在softlayer Rest处理中处理'@'

时间:2017-03-06 08:04:05

标签: ibm-cloud-infrastructure

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

{  “错误”:“访问被拒绝。”,  “code”:“SoftLayer_Exception_Public”

}

请建议如何解决这个问题。 我们可以使用别名而不是“12345_name@company.com”用户。

以下是我想要做的休息电话。

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 ;电源状态; CREATEDATE; hourlyBillingFlag; averageDailyPublicBandwidthUsage; billingItem [ID,项[ID,描述]类别[姓名,身份证],儿童[ID,项[ID,描述]类[ID,名称]]]; networkComponents [状态,ipAddressBindings.ipAddress,ID,NETWORKID,primaryIpAddress,端口,MAXSPEED]; networkVlans [子网[networkIdentifier,networkVlan.primaryRouter.hostname,CIDR,网关,ID,子网掩码,地址空间,networkVlanId,routingTypeName]]]

2 个答案:

答案 0 :(得分:0)

这似乎取决于您使用的REST客户端,使用Insonmia REST客户端或Chrome我没有遇到任何问题。

尝试像这样编码字符@:

由于您的用户ID具有特殊字符,在这种情况下为“@”,您需要使用以下URL编码:

                 https://12345_name%40company.com:@api.softlayer.com/rest/v3/SoftLayer_Account/getVirtualGuests.json?objectMask........

其中%40是'@'的URL编码。

此致

答案 1 :(得分:0)

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

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

你需要编码:

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

我可以推荐用于编码的工具: https://www.base64encode.org/

此处编码的示例:

<强> MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjg =

在凭据编码

之前添加基本字词是必要的
  

基本MTIzMTIzX3J1YmVyQHNvZnRsYXllci5jb20gMzc1ZjUwMjMyYWFiYTJkMDAyZWNhN2JjNWU5ZGM0ZjZhMDQyYThhNjU5ODIyNTRkZjg =

然后您可以添加“授权”作为标题,如下例所示(我使用Chrome的Advanced Rest Client):

enter image description here