【问题标题】:How to access a bug's XML page on Bugzilla using python with pycurl?如何使用 python 和 pycurl 访问 Bugzilla 上的错误 XML 页面?
【发布时间】:2015-01-15 17:44:57
【问题描述】:

我无法使用它的 Web 服务从 Bugzilla(我的版本是 4.2.5)上的错误中检索所有信息(例如 cmets、附件、估计时间...)。我有所有错误的 ID,并试图根据 URL 访问它们以获取错误的 XML 格式。

有人告诉我,Bugzilla API 不允许通过 cookie 进行访问。所以我有以下内容,但即使提供正确的用户名和密码,我也会一直卡在登录页面。这是我目前所拥有的:

pf = {'username' : 'my_username', 'password' : 'my_password' }
fields = urllib.urlencode(pf)
pageContents = StringIO.StringIO()

p = pycurl.Curl()
p.setopt(pycurl.FOLLOWLOCATION, 1)
p.setopt(pycurl.COOKIEFILE, './cookie_test.txt')
p.setopt(pycurl.COOKIEJAR, './cookie_test.txt')
p.setopt(pycurl.POST, 1)
p.setopt(pycurl.POSTFIELDS, fields)
p.setopt(pycurl.WRITEFUNCTION, pageContents.write)
p.setopt(pycurl.VERBOSE, True)
p.setopt(pycurl.DEBUGFUNCTION, test)
p.setopt(pycurl.URL, 'https://somewebsite.com/viewXMLof=[ENTER-BUG-ID-HERE]')
p.perform()

p.close() # This is mandatory.

pageContents.seek(0)

for x in pageContents.readlines() :
    print x

所以我得到的显示如下:

<html lang="en">
  <head>    
    <title>Log in to Website</title>
.
.
.

这意味着我仍在登录页面。有什么建议么?

如果需要进一步解释,请告诉我。

【问题讨论】:

    标签: python xml python-2.7 bugzilla pycurl


    【解决方案1】:

    Bugzilla 使用 XML-RPC 或 JSON-RPC。见https://www.bugzilla.org/docs/4.4/en/html/api/Bugzilla/WebService.htmlhttp://xmlrpc.scripting.com/spec

    使用 XML-RPC,您需要将 XML 文档发布到 mybugzilla.com/xmlrpc.cgi URL。这是获取 Bugzilla 时间信息的示例。

    <?xml version="1.0"?>
    <methodCall>
       <methodName>Bugzilla.time</methodName>
       <params>
         <param>
             <struct>
                 <member>
                    <name>Bugzilla_login</name>
                    <value>user@example.com</value>
                 </member>
                 <member>
                    <name>Bugzilla_password</name>
                    <value>password</value>
                 </member>        
             </struct>
          </param>
        </params>
    </methodCall>
    

    要获取特定的错误,请使用带有如下参数元素的 Bug.get 方法:

    <param>
        <struct>
            <member>
                <name>Bugzilla_login</name>
                <value>user@example.com</value>
            </member>
            <member>
                <name>Bugzilla_password</name>
                <value>password</value>
            </member>        
    
            <member>
                <name>ids</name>
                <value>
                    <array>
                        <data>
                            <value>
                                <int>1</int>
                            </value>
                        </data>
                    </array>
                </value>
            </member>   
        </struct>
    </param>
    

    此外,您可以使用http://xmlrpc.devzing.com/ 来帮助您测试您的 XML-RPC 调用并了解响应。

    【讨论】:

      猜你喜欢
      • 2015-03-08
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多