#ibm-cloud-infrastructure
#ibm-cloud-infrastructure
Вопрос:
Я пытаюсь заказать диски через API, используя urllib, но в ответ получаю неверный запрос. Я не могу определить, что может быть не так. Есть идеи?
url = "https://username:apikey@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder"
data = urllib.urlencode({
"parameters": [{
"virtualGuests": [{"id": idofvirtualguest}],
"prices": [{
"id": 113031,
"categories": [{
"categoryCode": "guest_disk1",
"complexType": "SoftLayer_Product_Item_Category"
}],
"complexType": "SoftLayer_Product_Item_Price"
},
{
"id": 112707,
"categories": [{
"categoryCode": "guest_disk2",
"complexType": "SoftLayer_Product_Item_Category"
}],
"complexType": "SoftLayer_Product_Item_Price"
}
],
"properties": [
{"name": "NOTE_GENERAL", "value": "adding disks"},
{"name": "MAINTENANCE_WINDOW", "value": "now"}
],
"complexType": "SoftLayer_Container_Product_Order_Virtual_Guest_Upgrade"
}]
})
response = urllib.urlopen(url, data)
Ответ №1:
Попробуйте использовать:
json.dumps вместо urllib.urlencode
Примечание: вам необходимо импортировать json, поэтому он должен выглядеть следующим образом:
import urllib
import json
url = "https://username:apiKey@api.softlayer.com/rest/v3/SoftLayer_Product_Order/placeOrder"
idofvirtualguest = 111122233
data = json.dumps({
"parameters": [{
"virtualGuests": [{"id": idofvirtualguest}],
"prices": [{
"id": 113031,
"categories": [{
"categoryCode": "guest_disk1",
"complexType": "SoftLayer_Product_Item_Category"
}],
"complexType": "SoftLayer_Product_Item_Price"
},
{
"id": 112707,
"categories": [{
"categoryCode": "guest_disk2",
"complexType": "SoftLayer_Product_Item_Category"
}],
"complexType": "SoftLayer_Product_Item_Price"
}
],
"properties": [
{"name": "NOTE_GENERAL", "value": "adding disks"},
{"name": "MAINTENANCE_WINDOW", "value": "now"}
],
"complexType": "SoftLayer_Container_Product_Order_Virtual_Guest_Upgrade"
}]
})
response = urllib.urlopen(url, data)