2015-01-15 9 views
2

Я не могу получить каждую информацию (например, комментарии, вложения, расчетное время ...) из-за ошибки Bugzilla (моя версия 4.2.5) с использованием Webservice. У меня есть все идентификаторы ошибок, и я пытаюсь получить доступ к их URL, чтобы получить XML-формат ошибки.Как получить доступ к XML-странице ошибки в Bugzilla с помощью python с pycurl?

Мне сказали, что API Bugzilla не разрешает доступ через файлы 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> 
. 
. 
. 

Это означает, что я до сих пор на странице входа. Какие-либо предложения?

Дайте мне знать, если требуется дополнительное объяснение.

ответ

1

Bugzilla использует XML-RPC или JSON-RPC. См. https://www.bugzilla.org/docs/4.4/en/html/api/Bugzilla/WebService.html и http://xmlrpc.scripting.com/spec

Используя XML-RPC, вам необходимо отправить текст XML на URL-адрес mybugzilla.com/xmlrpc.cgi. Вот пример, чтобы получить информацию о времени Bugzilla.

<?xml version="1.0"?> 
<methodCall> 
    <methodName>Bugzilla.time</methodName> 
    <params> 
    <param> 
     <struct> 
      <member> 
       <name>Bugzilla_login</name> 
       <value>[email protected]</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>[email protected]</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 и понимать Свои замечания.