2016-05-13 30 views
0
headers = {'x-auth-token': token,'Content-type':'application/json'} 
url2="http://192.168.56.1:8081/whitelist" 
print "HEaders",headers 
re=requests.get(url2,headers=headers) 
print re.content 
r = requests.post(url2, data=json.dumps(file_as_inp)) 
print r 
print "code:"+ str(r.status_code) 
print "******************" 
print "headers:"+ str(r.headers) 
print "******************" 
print "content:"+ str(r.content) 

我正在編寫腳本以便將數據發佈到web服務。我將auth-token和內容類型的頭部和json值列表作爲有效負載傳遞。 的file_as_inp包含的JSON值的列表作爲x-auth-token在發送請求時未通過報頭

[{'ip': '10.1.2.3'}, {'ip': '10.3.4.5'}, {'ip': '10.8.9.A'}, {'ip': '0'}, {'ip':'00'}, {'ip': 'null'}, {'ip': '10.9.4.5'}, {'ip': '10.7.6.2'}] 

頁眉包含:

{'Content-type': 'application/json', 'x-auth-token': u'313e95e7-ce08-46bf-8891-6d68fc615170'} 

我上一個命令提示符和其他命令提示符下,我運行此腳本運行我的服務。我得到響應,200。當我打印r.headers我得到一些輸出

headers:{'Content-Length': '57', 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Max-Age': '21600', 'Server': 'Werkzeug/0.11.9 Python/2.7', 'Date': 'Fri, 13 May 2016 04:47:52 GMT', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'HEAD, GET, POST, OPTIONS', 'Content-Type': 'text/html;charset=utf-8'} 

然而,當我打印r.content,我得到下面的橫線:

content:x-auth-token not passed in header, please pass the token. 

有人能告訴我在哪裏我錯了嗎?爲什麼我將上面的行作爲輸出?在將數據發佈到web服務後,我需要執行驗證並檢查IP是否有效。但是,我卡在這裏。

回答

1

您在調用POST請求時未設置標頭值。您可以將您的代碼更改爲:

r = requests.post(url2, data=json.dumps(file_as_inp), headers=headers) 

或者推薦的方法是使用Session對象。

Session對象允許您在請求之間保存某些參數。會話也可以用來爲請求方法提供默認數據。這是由Session對象提供數據的屬性來完成:

x-auth-token將被添加到每個標題請你使用Session對象。您的代碼應該看起來像這樣:

s = requests.Session() 
s.headers.update({'x-auth-token': token,'Content-type':'application/json'} ) 
url2 = "http://192.168.56.1:8081/whitelist" 

r = s.get(url2,headers=headers) 
print re.content 

r = s.post(url2, data=json.dumps(file_as_inp)) 
print r.content 
+0

謝謝。我已經添加標題。我甚至根據需要得到我的腳本輸出。然而每當我運行我的腳本的第二種類型時,輸出會被追加到最後的輸出中。是嗎? –

+0

@IramKhan - 我不確定爲什麼會發生這種情況。你應該發佈另一個問題。 – JRodDynamite

+0

我通過以下代碼修復了它:r = requests.post(url2,data = json.dumps(file_as_inp),headers = headers) print r #re = requests.get(url2,headers = headers) print「代碼:「+ str(r.status_code) print」******************「 print」headers:「+ str(r.headers) print」** ****************「 print」content:「+ str(r.text) –