0

私はPythonの初心者で、クルーシブルにログインし、トークンを使用して他のサービスに渡すスクリプトを作成しようとしています。1) xml 要求を作成して応答を取得できますが、ヘッダーを conn.request に渡すとすぐに、HTTP エラー 415、サポートされていないメディア タイプと表示されます。私はこのトピックについて静かに少し調査を行い、残りの API が json リクエストをサポートしていない可能性があることを発見しましたが、Crucible は API が json をサポートしていると述べているため、他の問題のようです。2) 引数を渡そうとしたときfeauth を使用して生成された認証トークンは使用されていません。今のところ、それを url に追加しましたが、動作します。

同じことで私を助けてください、以下は私のスクリプトです

import httplib
import urllib
import json
from xml.etree.ElementTree import XML 
import xml.dom.minidom



    conn = httplib.HTTPSConnection("fisheye")
    args=urllib.urlencode({'userName':'UNAME', 'password':'PWD'})
    headers={'content-type':'application/json', 'accept':'application/json'}
    #headers={'Authorization' : 'Basic %s' % base64.b64encode("username:password")}

r1 = conn.request("post", "/rest-service/auth-v1/login", args)
#status = r1[u'headers']['status']

#conn.connect()


r2 = conn.getresponse()

print r1,r2.status,r2.reason,r2
r3=r2.read()
print(r3)
r4=str(r3)
print r4
data = XML(r4).find("token").text
print data

# data1=urllib.quote_plus(data, safe=":")
# print data1
args=urllib.urlencode({'FEAUTH':data}).replace("%3A", ":")
print "args is", args
#args={}

req = conn.request("get","/rest-service/reviews-v1")
r3 = conn.getresponse()
status = r3.status
print "the url is"#, r3.getheader('Location')
url=r3.getheader('location', '')
print url
url1=r3.msg#.dict['location']
print url1
#print req.url
#print req.get_method()
print dir(req)  # list lots of other stuff in Request

print "after sending open review request"
print r3

print req,r3.status,r3.reason,r3
r4=r3.read()
print(r4)
r5=str(r4)
print r5
# json_ob=json.loads(r3.read())
# print json_ob
4

2 に答える 2

3

私はによって問題を解決することができました

1)ヘッダーからContent-Typeを削除し、acceptをAccept(文の場合)に変更しました。

2)ログインリクエストはgetリクエストであったため、URL追加によるデータ転送をサポートしています。引数を渡すことができるのはpostリクエストのみです。

于 2013-03-11T07:51:10.543 に答える
0

リクエストのヘッダーで、メディア タイプを指定してみてください。

headers = { 'Content-Type' : 'application/json' }
req = urllib2.Request(url, headers=headers)
于 2013-03-07T08:44:38.537 に答える