1. 程式人生 > >Python post 傳遞text格式引數(自己組裝資料頭)

Python post 傳遞text格式引數(自己組裝資料頭)

哎,測試的時候要用postman這種工具, 用滑鼠點點點,然後又要切到shell中看log日誌,切來切去給我弄煩了,想寫個指令碼偷懶,然後發現幾個問題,之前寫的都是傳遞json而且在Java後端裡面沒有設定為POST,這個介面是要傳遞json型別的字串.這就尷尬了...

解決辦法寫在最後,很傻,記錄下

#傳遞json 不限制post/get的方法
import urllib2,json

url = 'http://192.1.1.1:8080/interface/login'
head = {
'content-type':'application/json'
}
data = {'user':'user123','pwd':'123'}
request = urllib2.Requse(url=url, headers=head, data=json.dumps(data))
res = urllib2.urlopen(request)
上面這明顯不是我想要的東西
//因為我在後端用java寫的是
JSONObject json = JSONObject.fromObject(s);//String s; 就是我傳遞來的json格式的字串
json.getString("user");
//....

百度了一圈沒有找到我想要的方法,好多都是要用urllib這包的,並用urllib.urlencode(data)傳遞這個資料過去,明顯不是我想要的

反而前面的更靠譜些,查看了一下urllib2.Request的原始碼

#urllib2.Request
def get_method(self):
    if self.has_data():
        return "POST"
   else:
     return "GET"
看到此處想打自己了- -

最後

#傳遞自定義  限制post/get的方法
import urllib2
url = 'http://192.1.1.1:8080/interface/login'
head = {
'content-type':'text',#具體要什麼的格式,自己拼接http頭就行
'method':'post'
}
data = "{'user':'user123','pwd':'123'}"
request = urllib2.Requse(url=url, headers=head, data=data)
res = urllib2.urlopen(request)
應該給資料格式頭寫個筆記才是...