Python post 傳遞text格式引數(自己組裝資料頭)
阿新 • • 發佈:2019-02-06
哎,測試的時候要用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)
應該給資料格式頭寫個筆記才是...