有权限的哦
是的,在python 3中urllib和urllib2库合并成了urllib库, python3.3后urllib2已经不能再用,只能用urllib.request来代替
错误原因:python2和python3的urllib结构是有所不同的,所以不能这样用
解决方案:
data = urllib.parse.urlencode(data)
是个标签啊
Traceback (most recent call last): File "E:\Python\Python37\lib\urllib\request.py", line 1317, in do_open encode_chunked=req.has_header('Transfer-encoding')) File "E:\Python\Python37\lib\http\client.py", line 1229, in request self._send_request(method, url, body, headers, encode_chunked) File "E:\Python\Python37\lib\http\client.py", line 1275, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "E:\Python\Python37\lib\http\client.py", line 1224, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "E:\Python\Python37\lib\http\client.py", line 1016, in _send_output self.send(msg) File "E:\Python\Python37\lib\http\client.py", line 956, in send self.connect() File "E:\Python\Python37\lib\http\client.py", line 928, in connect (self.host,self.port), self.timeout, self.source_address) File "E:\Python\Python37\lib\socket.py", line 707, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): File "E:\Python\Python37\lib\socket.py", line 748, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags):socket.gaierror: [Errno 11001] getaddrinfo failed
#定义代码格式
#-*- coding:utf8 -*-
from urllib import request
from urllib import parse
from urllib.request import urlopen
url = "http://xapi.kybyun.com/user/login"
#定义请求数据并赋值
headers = {}
headers = {
'Host': 'xapi.kybyun.com',
'Connection': 'keep-alive',
'User-Agent': 'BangXueTang AipBot/1.0(BangXueTang-IOS/2.1.3.1;IOS/9.30;iPhone 6 Plus)',
'KY-UKEY': '940cd0dffd371d41eb0acbb7694fd5e9',
'KY-SYDEV': 'iPhone 6 Plus',
'KY-SPEID': '10010101',
'KY-SCHID': '1044',
'KY-APPCHG': 'AppStore',
'Connection': 'keep-alive',
'KY-UUID': '6ff7563dbd47c8077905c3920bc0d8b3',
'KY-YEAR': '2017',
'Accept-Language': 'zh-Hans-CN;q=1',
'KY-SYSVER': '9.3',
'Accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded',
'KY-APPVER': '2.1.3.1',
'KY-APPVERS': '4',
'KY-APPTYPE': '21'
}
data = {}
data['appchg'] = 'Appstore'
data['apptype'] = '21'
data['appver'] = '2.1.3.1'
data['email'] = 'mushishi01'
data['isblind'] = '0'
data['passwd'] = '111111'
data['sysdev'] = 'iPhone 6 Plus'
data['sysver'] = '9.3'
data['uuid'] = '6ff7563dbd47c8077905c3920bc0d8b3'
#对数据进行编码
data = parse.urlencode(data).encode(encoding='UTF8')
#对post的数据进行合并
req = request.Request(url, data, headers)
#打开请求获取对象
requestResponse = urlopen(req)
#读取服务端返回的对象
responseStr = requestResponse.read()
#将密码进行转译(因为密码用的是MD5的,对应上边)
ResponseStr = responseStr.decode("unicode_escape")
#打印数据
print(ResponseStr)
配置:
1、新建一个线程组:然后设置线程数、运行时间、重复次数。
2、新建Http请求:设置服务器域名,路径,方法,编码格式,数据内容。
可以在函数助手中,编辑所需要的变量,比如本例中的随机生成电话号码。
3、添加HTTP信息头管理器,然后信息头添加一条名称为 Content-Type,值为 application/json 即可。
4、添加“用表格查看结果”,也可以添加其他的结果分析方式,最终可以看到服务器的吞吐量。
已经解决了还是数据编码的问题和代码没关系。只需要将代码变成这样就可以了。
data = urllib.parse.urlencode(data).encode(encoding='utf8')
在谷歌或者火狐浏览器中使用F12,点击查看网络中的数据,即可
原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装;
2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;
解决方案:
1)对照字段名称,类型保证一致性
2)使用stringify将前端传递的对象转化为字符串 data: JSON.stringify(param) ;
urllib2是一个标准库,安装python之后就自带了,并且只在于python2中在python3中,已经把urllib,urllib2等的合并为一个包urllib了。
Tools->Build or Ctrl+B
首先要了解什么是http协议,http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html这是http协议详解
http://www.cnblogs.com/Joans/p/3956490.html这里面关于header值详解
https://coding.imooc.com/class/374.html
这需要看接口请求,有的是header方式访问的
这种包就是python的扩展包,类似java的库,先不去管是怎么来的,先学会使用。
你可以理解为,这是别人编写的程序,是方法的集合,你直接调用就可以了,是集成在你环境里的。
在筹备选题中,肯定不负众望