2016-04-09 20 views
-2

Bir REST API'm var ve kullanıyorum ama hata alıyorum. Doğrudan linux komut satırında bunu çalıştırıyor. Aşağıda API ##Aşağıdaki REST API'sı nasıl kullanılır,

curl -v -s --insecure -X POST -H "X-Auth-User: <groupApiId>" -H "X-Auth-Key: <authKey>" -H "X-Auth-Requester: <requesterCorpId>" -H "Content-Type: application/json" -d "{\"serverList\":[\"xxxxxxxx\"],\"ticket\":\"IM154587704\",\"expirationDate\":\"2015-07-28T16:36:00\",\"}" http://xxxxx.com/filters/createFilter 

aşağıda anında Python + Requests koduna sizin cURL komutu dönüştürmek istiyorum oldukça elverişli "Convert cURL syntax to Python" service yoktur piton

#/usr/bin/env python 


import time 
import urllib 
import urllib2 
headers={"X-Auth-User": "xxx", 
     "X-Auth-Key": "xxxxxxxxxxxxxxxxxxxxxx", 
     "X-Auth-Requester" : "12345", 
     "Content-Type": "application/json"} 

header["X-Auth-Requester"]=username 

body_content={"serverList":'yyyyyy', 
      "ticket":'1234', 
      "expirationDate":"2016-04-12T16:36:00"} 
url="http://xxxxxxxxxx.com/filters/createFilter" 

body = urllib.urlencode(body_content) 
req = urllib2.Request(url, body, headers) 
try: 
    response = urllib2.urlopen(req) 
    the_page = response.read() 
    filter_result=response.code 
    if filter_result==200: 
    print(" success\n") 
except urllib2.HTTPError as e: 
    print e.code 
+0

Ben hatalar aşağıda alıyorum urllib2 kullanarak Dosya "", satır 1, Dosya "/usr/lib64/python2.6/urllib2.py", satır 126, urlopen içinde döndürme _opener.open (url, veri, zaman aşımı) Dosya "/usr/lib64/python2.6 /urllib2.py ", l ine 397, açık olarak yanıt = meth (req, yanıt) Dosya "/usr/lib64/python2.6/urllib2.py", satır 510, http_response 'http', istek, yanıt, kod, msg, hdrs) Dosya "/usr/lib64/python2.6/urllib2.py", satır 435, numaralı hatada self._call_chain (* args) döndürüyor F – shankar

cevap

0

import urllib2 
import json 
headers = { 
    'X-Auth-User': 'xxx', 
    'X-Auth-Key': 'yyyy', 
    'X-Auth-Requester ':'uuuu', 
    'Content-Type': 'application/json', 
    } 

body = {"serverList":["xxxxx"], 
     "ticket":cm_or_im, 
     "expirationDate":"2016-04-10T16:36:00", 
     } 

body = json.dumps(body) 


url="http://xxxxxx.com/filters/createFilter" 

req = urllib2.Request(url,body,headers) 
try: 
    response = urllib2.urlopen(req) 
    the_page = response.read() 
    filter_result = response.code 
    if filter_result==200: 
     print("success\n") 
except urllib2.HTTPError as e: 
    print e.code 
+0

'body = str (body)' yanlıştır, 'json' 'u içe aktarmanız ve verileri JSON olarak kodlamak için json.dumps() işlevini kullanmanız gerekir. – augurar

+0

@augurar, python'da yeniyim, lütfen yukarıdaki kodda nasıl yapılacağını gösterir misiniz? – shankar

2

benim kod olmasıdır. İşte

o (bazı iyileştirmeler ile) üretilen budur: (son En son çağrı) traceback:

import json 
import requests 

headers = { 
    'X-Auth-User': '', 
    'X-Auth-Key': '', 
    'X-Auth-Requester': '', 
    'Content-Type': 'application/json', 
} 

data = { 
    "serverList":["xxxxxxxx"], 
    "ticket":"IM154587704", 
    "expirationDate":"2015-07-28T16:36:00", 
    "matchStringList":["Testing123"] 
} 

response = requests.post('http://mymonitoring-qa.fmr.com/filters/createFilter', 
         headers=headers, 
         data=json.dumps(data)) 
+0

urllib ve urllib2 ile yapmak mümkün değil çünkü Paketlerimizde kurulu paketler ister. Lütfen urllib ve urllib2 @alecxe ile yardım edin. – shankar