- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有 VMware 设置用于测试。我创建了一个用户 abc/abc123 来访问组织 url“http://localhost/cloud/org/MyOrg”。我想访问 VCloud 的 RestAPI。我尝试在 firefox 中使用 RestClient 插件。它工作正常。
现在我尝试使用 python 代码。
url = 'https://localhost/api/sessions/'
req = urllib2.Request(url)
base64string = base64.encodestring('%s:%s' % ('abc@MyOrg', 'abc123'))[:-1]
authheader = "Basic %s" % base64string
req.add_header("Authorization", authheader)
req.add_header("Accept", 'application/*+xml;version=1.5')
f = urllib2.urlopen(req)
data = f.read()
print(data)
这是我从 stackoverflow 获得的代码。但对于我的示例,它给出了“urllib2.HTTPError:HTTP 错误 403:禁止访问”错误。
我也尝试过 HTTP 身份验证。
最佳答案
谷歌搜索后,我从帖子 https://stackoverflow.com/a/6348729/243031 中找到了解决方案.我更改代码以提高可用性。我发布答案是因为如果有人有同样的错误,那么他会直接得到答案。
我的更改代码是:
import urllib2
import base64
# make a string with the request type in it:
method = "POST"
# create a handler. you can specify different handlers here (file uploads etc)
# but we go for the default
handler = urllib2.HTTPSHandler()
# create an openerdirector instance
opener = urllib2.build_opener(handler)
# build a request
url = 'https://localhost/api/sessions'
request = urllib2.Request(url)
# add any other information you want
base64string = base64.encodestring('%s:%s' % ('abc@MyOrg', 'abc123'))[:-1]
authheader = "Basic %s" % base64string
request.add_header("Authorization", authheader)
request.add_header("Accept",'application/*+xml;version=1.5')
# overload the get method function with a small anonymous function...
request.get_method = lambda: method
# try it; don't forget to catch the result
try:
connection = opener.open(request)
except urllib2.HTTPError,e:
connection = e
# check. Substitute with appropriate HTTP code.
if connection.code == 200:
data = connection.read()
print "Data :", data
else:
print "ERRROR", connection.code
希望这对那些想要在没有数据的情况下发送 POST 请求的人有所帮助。
关于python - Python 中 RestAPI 的 VCloud Director Org 用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395224/
我正在尝试使用 vCloud rest API 将虚拟机从模板部署到 vApp 中。我觉得应该有一种方法可以在我生成虚拟机时配置它(因为 UI 似乎可以这样做)但还没有找到方法。 我一直专注于重构 v
我们的迁移服务必须支持许多不同的目标云(从 AWS 到 Openstack 再到 vCloud 等等),所以我想至少在我们检索帐户属性(例如区域、组织)的部分使用 jclouds 、目录等) 但是,j
谁能帮助我了解 vSphere 和 vCloud director?两者的区别是什么? 安装后如何在自己的 Java 应用程序中使用 vCloud 的 REST URI? 任何使用 vCloud RE
我正在使用 VMWare 提供的 vCloud Java API 在他们的企业云解决方案中自动创建 VM。我已经能够做到这一点就好了。但是我无法弄清楚在 VM 上设置自定义属性。我已经查看了 VMWa
我有 VMware 设置用于测试。我创建了一个用户 abc/abc123 来访问组织 url“http://localhost/cloud/org/MyOrg”。我想访问 VCloud 的 RestA
我是一名优秀的程序员,十分优秀!