簡體   English   中英

Python使用urllib2失敗

[英]Python failure to PUT using urllib2

我正在嘗試使用urllib2進行http放置。

服務器管理員說我需要提供以下格式的數據:{“type”:“store”,“data”:[“9953”]}

我的代碼如下:

url = 'https://url.com/polling/v1/5cb401c5-bded-40f8-84bb-6566cdeb3dbb/stores'
request = urllib2.Request(url, data='{\"type\":\"store\",\"data\":[\"9953\"]}')
request.add_header("Authorization", "Basic %s" % creds)
request.add_header("Content-type", "application/json")
request.add_header("Accept", "application/json")
print "Data: %s" % request.get_data()
print "Accept: %s" % request.get_header("Accept")
print "Content-Type: %s" % request.get_header("Content-type")
print "Authorization: %s" % request.get_header("Authorization")
try:
    result = urllib2.urlopen(request, data )
except urllib2.HTTPError as e:
    print e.read()
    exit()
data = json.loads(result.read())
print data

我運行時的輸出是:

Data: {"type":"store","data":["9953"]}
Accept: application/json
Content-Type: application/json
Authorization: Basic U1lTQ1RMOmFiYzEyMw==

這正是我被告知發送的內容

但是我收到以下錯誤:

BWEB000065: HTTP Status 400 - org.codehaus.jackson.JsonParseException: Unexpected end-of-input: expected close marker for ARRAY (from [Source: org.jboss.resteasy.core.interception.MessageBodyReaderContextImpl$InputStreamWrapper@695dd38d; line: 2, column: 15])

任何幫助,將不勝感激。

請注意這兩行代碼:

request = urllib2.Request(url, data='{\"type\":\"store\",\"data\":[\"9953\"]}')

result = urllib2.urlopen(request, data)

在第一行中,您通過將名為parameter set的data傳遞給JSON有效內容來初始化請求。 這似乎是正確的。

但是,第二行傳入data ,覆蓋您在第一行初始化的有效負載。 我假設這里的data是程序的較大上下文中的一些變量(未在原始問題中顯示),並且該data變量被設置為某個不同的值,可能是無效的JSON有效負載。

如果第一行中的有效負載被正確初始化,那么我建議將第二行更改為:

result = urllib2.urlopen(request)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM