简单请求
# 简单的请求响应
import urllib2
response = urllib2.urlopen('http://www.baidu.com/')
html = response.read()
print html
或
import urllib2
request = urllib2.Request('http://www.baidu.com/')
response = urllib2.urlopen(request)
html = response.read()
print html
JSON操作
JSON对象直接使用
其实就是dict
import json
body_value = {"name":"张三","data":{"cmdtype":"test","currpage":"0","pagesize":"10"}}
print json.dumps(body_value, ensure_ascii=False)
JSON未转义字符串在loads后使用
import json
body_value = '{"name":"张三","data":{"cmdtype":"test","currpage":"0","pagesize":"10"}}'
decoded = json.loads(body_value)
print 'name:',decoded['name']
print 'data.cmdtype:',decoded['data']['cmdtype']
print json.dumps(decoded, ensure_ascii=False)
结果为:
name: 张三
data.cmdtype: test
{"data": {"currpage": "0", "pagesize": "10", "cmdtype": "test"}, "name": "张三"}
ensure_ascii=False不加的话,中文不会被显示正确
在dumps()中添加indent=4后,可格式化json:
print json.dumps(decoded, ensure_ascii=False, indent=4)
{
"data": {
"currpage": "0",
"pagesize": "10",
"cmdtype": "test"
},
"name": "张三"
}
在dumps()中添加sort_keys=True后,可将JSON属性排序:
print json.dumps(decoded, indent=4, sort_keys=True, ensure_ascii=False)
{
"data": {
"cmdtype": "test",
"currpage": "0",
"pagesize": "10"
},
"name": "张三"
}
JSON有转义字符的字符串在loads后使用
import json
body_value = '''
{
"name":"张三",
"data":{
\"cmdtype\":\"test\",
\"currpage\":0,
\"pagesize\":10
}
}
'''
decoded = json.loads(body_value)
print decoded.keys()
print json.dumps(decoded, sort_keys=True, ensure_ascii=False, indent=4)
结果:
[u'data', u'name']
{
"data": {
"cmdtype": "test",
"currpage": 0,
"pagesize": 10
},
"name": "张三"
}
json.loads与eval的区别
import json
body_value = "{\"name\":\"张三\",\"data\":{\"cmdtype\":\"test\",\"currpage\":0,\"pagesize\":10}}"
decoded = eval(body_value)
print decoded.keys()
print json.dumps(decoded, sort_keys=True, ensure_ascii=False, indent=4)
decoded = json.loads(body_value)
print decoded.keys()
print json.dumps(decoded, sort_keys=True, ensure_ascii=False, indent=4)
结果:
['data', 'name']
{
"data": {
"cmdtype": "test",
"currpage": 0,
"pagesize": 10
},
"name": "张三"
}
[u'data', u'name']
{
"data": {
"cmdtype": "test",
"currpage": 0,
"pagesize": 10
},
"name": "张三"
}
发送JSON格式请求
import httplib
import json
def http_post():
requrl = 'http://localhost:8999/query/normal'
headerdata = {"Content-type": "application/json"}
body_value = {"name":"张三","data":{"cmdtype":"test","currpage":"0","pagesize":"10"}}
conn = httplib.HTTPConnection("localhost", 8999)
conn.request('POST', requrl, json.dumps(body_value), headerdata)
response = conn.getresponse()
return response.read()
data = http_post()
print data