2015-01-15 10 views
2

Bugzilla 버그 (내 버전은 4.2.5)에서 Webservice를 사용하여 모든 정보 (예 : 댓글, 첨부 파일, 예상 시간 ...)를 검색 할 수 없습니다. 나는 버그의 모든 ID를 가지고 있으며 버그에 대한 XML 형식을 얻기 위해 URL에 따라 액세스하려고하고 있습니다.pycurl을 사용하여 Python을 사용하여 Bugzilla에서 버그의 XML 페이지에 액세스하는 방법은 무엇입니까?

Bugzilla API가 쿠키를 통한 액세스를 허용하지 않는다고 들었습니다. 그래서 다음과 같은 있지만 올바른 사용자 이름과 암호를 제공 할 때 로그인 페이지에서 계속 붙어. 여기에 지금까지 무엇을 가지고 :

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

이 내가 로그인 페이지에서 여전히임을 의미

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 

그래서 내가 무엇을 표시 얻을 것은 다음과 같다. 어떤 제안?

추가 설명이 필요한 경우 알려 주시기 바랍니다.

답변

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에 POST해야합니다. 다음은 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> 

특정 버그가이 같은 PARAM 요소로 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> 

은 또한 당신은 당신이 당신의 XML-RPC 호출을 테스트하고 responces을 이해하는 데 도움이 http://xmlrpc.devzing.com/를 사용할 수 있습니다.