গোপন পোস্টে ভাঙা পোস্ট

আমি সাহায্যে প্লাগ ব্যবহার করে একটি POST সমস্যা আছে। এখানে কোড:

import base64
import urllib
import httplib

http = urllib3.PoolManager()
head = {"Authorization":"Basic %s" % base64.encodestring("foo:bar")}
fields = {"token":"088cfe772ce0b7760186fe4762843a11"}

conn = httplib.HTTPSConnection("foundation.iplantc.org")
conn.set_debuglevel(2)
conn.request('POST', '/auth-v1/renew', urllib.urlencode(fields), head)
print conn.getresponse().read()
conn.close()

যে পোস্টটি আসে তা সঠিক। আমি জানি আমি একটি টেলনেট সেশন শুরু করেছি এবং কাজটি সূক্ষ্মভাবে টাইপ করেছি। এটা এখানে:

'POST /auth-v1/renew HTTP/1.1\r\nHost: foundation.iplantc.org\r\nAccept-Encoding: identity\r\nContent-Length: 38\r\nAuthorization: Basic YXRlcnJlbDpvTnl12aesf==\n\r\n\r\ntoken=088cfe772ce0b7760186fe4762843a11'

কিন্তু পাইথন স্ক্রিপ্ট এটি পাঠায় যখন সার্ভারের প্রতিক্রিয়া "টোকেন খুঁজে পাওয়া যায় নি" BTW এটি urllib3 (urllib2 একই ত্রুটি দেখায়) সঙ্গে কাজ করে, যা একটি multipart এনকোডিং ব্যবহার করে, কিন্তু আমি জানতে চাই উপরের কি কি ভুল হচ্ছে। আমি বরং অন্য তৃতীয় পক্ষের প্যাকেজ উপর নির্ভর করবে না।

0

1 উত্তর

httplib doesn't automatically add a Content-Type header, you have to add it yourself. (urllib2 automatically adds application/x-www-form-urlencoded as Content-Type).

তবে কি সার্ভার বন্ধ করা হচ্ছে তা হল অতিরিক্ত ' \ n ' আপনার অনুমোদন হেডারের পরে, বেস64.encodestring দ্বারা চালু করা হয়। আপনি পরিবর্তে base64.urlsafe_b64encode ব্যবহার করতে হবে।

0
যোগ
আমি বিষয়বস্তু-প্রকারের সাথে খেলা করেছি কিন্তু এটি সামগ্রী-টাইপ হিসাবে ভুল বানান ... base64.urlsafe_b64encode কিছু পরিবর্তন করেনি।
যোগ লেখক aterrel, উৎস