2016-10-25 11 views
0

次のコードでは、クロムの郵便番号アプリに次のデータ(template_data)が渡されたときに、応答はありますが、urllib2と一緒に投稿されたときと同じデータがエラーになります。郵便配達はfalseに与えられるべきではない:requiredフィールドは、すなわち他false should not be given in quotes even in postman scriptそこには応答がありませんが、「偽の」がtemplate_dataで引用符を与えられている場合と同じにはurllib2のurllib2を使用したPOSTデータの場合400

に失敗しても、結果は400

編集ですもし与えがエラーであるならば、このパラメータを送る方法がわからない

import urllib 
import urllib2 

def get_url_data(url, request_method, content_type, data=None, 
       headers={}): 
    method = request_method 
    handler = urllib2.HTTPHandler(debuglevel=1) 
    opener = urllib2.build_opener(handler) 
    if data is not None: 
     data = urllib.urlencode(data) 
    request = urllib2.Request(url, data=data,headers=headers) 
    request.add_header("Content-Type", content_type) 
    request.get_method = lambda: method 
    try: 
     connection = opener.open(request) 
    except urllib2.HTTPError,e: 
     connection = e 
    print connection.code 
    if connection.code == 200: 
     resp = connection.read() 
     return resp 
    return None 

form_template_url="https://example.com" 
auth='sometokenid' 
template_header_param = {'Authorization':auth} 
template_data = { 
    "templateName": "somename", 
    "category": "Handbook", 
    "formTemplateDef": [{ 
    "id": "0", 
    "component": "textInput", 
    "editable": "true", 
    "index": "0", 
    "label": "Handbook", 
    "description": "", 
    "placeholder": "TextInput", 
    "options": [], 
    "required": 'false' 
    }] 
} 
template_response = get_url_data(form_template_url, 
    'POST', 'application/json', 
    template_data, template_header_param) 
+0

YEsコードの編集を参照してください – Rajeev

+1

一重引用符を二重引用符で置き換えてください。つまり、「必須」:jsonは二重と置き換えます。 –

+0

Python2では200を返します。郵便配達のバグのようだ。 – msw

答えて

0

data = urllib.urlencode(data) 

を削除し、これは動作するはず

urllib2.urlopen(req, json.dumps(data)) 

を使用しています。

+0

これはコメントであり、答えではありません。 – msw

関連する問題