9

私は Python は初めてで、jira-python ライブラリもネットワーク プログラミングも初めてですが、アプリケーションと統合のプログラミングとデータベース クエリについてはかなりの経験があります (かなり時間が経ちましたが)。

Python 2.7 とリクエスト 1.0.3 の使用

このライブラリ ( http://jira-python.readthedocs.org/en/latest/ )を使用して、Python を使用して Jira 5.1 をクエリしようとしています。認証されていないクエリを使用して正常に接続しましたが、 の行を変更する必要がありましたclient.py

私が変更され

self._session = requests.session(verify=verify, hooks={'args': self._add_content_type}) 

self._session = requests.session() 

何をしているのか正確にはわかりませんでしたが、変更前はエラーが発生し、変更後は成功したプロジェクト名のリストが返されました。

次に、基本認証を試して、Jira 権限を利用してレポートを作成できるようにしました。それも最初は失敗しました。そして、私は同じ変更を加えました

def _create_http_basic_session

client.py、しかし今は別のエラーが発生します。だから問題は解決していません。今、私は別のエラーが発生します:

HTTP Status 415 - Unsupported Media Type
type Status report
message Unsupported Media Type

description The server refused this request because the request entity is in
a format not` `supported by the requested resource for the requested method 
(Unsupported Media Type).

そこで、リクエスト モジュールを使用して非常に簡単なテストを行うことにしました。このモジュールは、jira-python モジュールで使用されていると思われます。このコードでログインしているように見えました。良い応答が得られました。

import requests

r = requests.get(the_url, auth=(my username , password))
print r.text

助言がありますか?

4

4 に答える 4

20

Python スクリプトで認証を使用してjiraモジュールを使用する方法は次のとおりです。

from jira.client import JIRA
import logging

# Defines a function for connecting to Jira
def connect_jira(log, jira_server, jira_user, jira_password):
    '''
    Connect to JIRA. Return None on error
    '''
    try:
        log.info("Connecting to JIRA: %s" % jira_server)
        jira_options = {'server': jira_server}
        jira = JIRA(options=jira_options, basic_auth=(jira_user, jira_password))
                                        # ^--- Note the tuple
        return jira
    except Exception,e:
        log.error("Failed to connect to JIRA: %s" % e)
        return None

# create logger
log = logging.getLogger(__name__)

# NOTE: You put your login details in the function call connect_jira(..) below!

# create a connection object, jc
jc = connect_jira(log, "https://myjira.mydom.com", "myusername", "mypassword")

# print names of all projects
projects = jc.projects()
for v in projects:
       print v
于 2012-12-31T18:46:22.793 に答える
1

ライブラリを変更しないでください。代わりに、資格情報を ~/.netrc ファイル内に配置してください。

それらをそこに置くと、curl または wget を使用して呼び出しをテストすることもできます。

Jira 5.x との互換性についてはもうわかりません。現在テストされているのは 7.x と 6.4 のみです。テスト用のインスタンスをセットアップする場合は、統合テストを変更してそれに対して実行することもできます。

私の幸運な推測は、あなたがその変更でそれを壊したということです.

于 2016-02-04T09:13:45.927 に答える