沉默的小狗 2023-10-25 19:28 采纳率: 0%
浏览 10

在使用python处理校园跑时出下这样的报错信息

import requests
import gzip
import json
from numpy import random
# 获取UID
url = 'http://XXXXXXXXXXXX/cloud/DflyServer'
headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Connection': 'Keep-Alive',
    'Charset': 'UTF-8',
    'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; NX651J Build/RKQ1.200826.002)',
    'Host': 'xxxxxxxxx',
    'Accept-Encoding': 'gzip',
    'Content-Length': '168'
}
data = "name=['bangdingschool','xxxxxxxxx','xxxxxxxxx','236df500-4995-4f79-91f0-c119308abcd3','nubia','NX651J','android','11']"
res = requests.post(url, headers=headers, data=data)
uid = json.loads(res.text)['uid']  # 解压缩并解析返回的JSON数据以获取UID
print(f"UID: {uid}")  # 输出UID
# 正式发送跑步的数据包  
url = 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxx/DragonFlyServ/Api/webserver/uploadRunData'
headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Connection': 'Keep-Alive',
    'Charset': 'UTF-8',
    'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; NX651J Build/RKQ1.200826.002)',
    'Host': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'Accept-Encoding': 'gzip',
    'Content-Length': '1963'
}
intervalTime = 0
begintime = 1695720877
for i in range(1, 43):  # 1-43,每次上传3公里左右  
    begintime = begintime + intervalTime
    usetime = random.randint(1064 - 300, 1064 + 300)  # 1064.0  
    endtime = usetime + 1 + begintime
    distance = random.randint(3100, 3300)  # 3010.0  
    speed = format(distance / usetime, '.16f')  # 2.8289473684210527  
    intervalTime = random.randint(86400 - 500, 86400 + 500)
    baseData = {"begintime": str(begintime), "endtime": str(endtime), "uid": str(uid), "schoolno": "xxxxxxx",
                "distance": str(distance), "speed": speed, "studentno": "xxxxxxxxxxxxxxx, "atttype": "3", "eventno": "801",
                "location": "", "pointstatus": "1", "usetime": str(usetime)}  # 格式修正了,不需要gzip压缩
    data = gzip.compress(baseData.encode())
    res = requests.post(url, headers=headers, data=data)
    print(res.text)  # 打印响应内容检查是否成功

以上为程序主体代码,下面是报错信息,老哥们,怎么办?

C:\Users\Yang\anaconda3\envs\text\python.exe D:\360MoveData\Users\Yang\Desktop\AIhong\main.py 
Traceback (most recent call last):
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\util\connection.py", line 72, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "C:\Users\Yang\anaconda3\envs\text\lib\socket.py", line 954, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connectionpool.py", line 714, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connectionpool.py", line 415, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connection.py", line 244, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "C:\Users\Yang\anaconda3\envs\text\lib\http\client.py", line 1285, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\Yang\anaconda3\envs\text\lib\http\client.py", line 1331, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\Yang\anaconda3\envs\text\lib\http\client.py", line 1280, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\Yang\anaconda3\envs\text\lib\http\client.py", line 1040, in _send_output
    self.send(msg)
  File "C:\Users\Yang\anaconda3\envs\text\lib\http\client.py", line 980, in send
    self.connect()
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connection.py", line 205, in connect
    conn = self._new_conn()
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0000023E4E034070>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\requests\adapters.py", line 486, in send
    resp = conn.urlopen(
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\connectionpool.py", line 798, in urlopen
    retries = retries.increment(
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\urllib3\util\retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='218.195.237.156.cn', port=8012): Max retries exceeded with url: /cloud/DflyServer (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000023E4E034070>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:\360MoveData\Users\Yang\Desktop\AIhong\main.py", line 17, in <module>
    res = requests.post(url, headers=headers, data=data)
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\requests\api.py", line 115, in post
    return request("post", url, data=data, json=json, **kwargs)
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\requests\api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\requests\sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\requests\sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Yang\anaconda3\envs\text\lib\site-packages\requests\adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='218.195.237.156.cn', port=8012): Max retries exceeded with url: /cloud/DflyServer (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000023E4E034070>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-25 23:35
    关注

    【以下回答由 GPT 生成】

    问题分析:

    1. 错误提示信息:报错的具体信息没有提供,需要在代码中找到报错的位置才能确定具体错误。

    2. 潜在问题1:请求头(headers)中的Content-Length参数值错误。在代码中给出的值是Content-Length': '<span class="hljs-number">1963</span>',并不是一个实际的数字。

    3. 潜在问题2:代码中的部分字符存在HTML标签的样式类信息<span class="hljs-number">xxxxx</span>,这些标签应该是代码复制过程中产生的错误,需要将它们去除。

    解决方法:

    1. 错误提示信息:由于没有提供具体的错误提示信息,无法确定代码中的具体错误。

    2. 解决方法:根据代码进行分析,如果确定Content-Length的值是一个固定值,可以直接将其设为请求体的长度。如果Content-Length的值是可变的,可以使用len()函数来动态计算请求体的长度。

    3. 解决方法:将代码中的HTML标签去除,将<span class="hljs-number">xxxxx</span>改为具体的数字。

    根据以上分析,以下是修改后的代码:

    import requests
    import gzip
    import json
    from numpy import random
    
    # 获取UID
    url = 'http://XXXXXXXXXXXX/cloud/DflyServer'
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Connection': 'Keep-Alive',
        'Charset': 'UTF-8',
        'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; NX651J Build/RKQ1.200826.002)',
        'Host': 'xxxxxxxxx',
        'Accept-Encoding': 'gzip',
        'Content-Length': str(len(data))
    }
    data = '''name=['bangdingschool','xxxxxxxxx','xxxxxxxxx','236df500-4995-4f79-91f0-c119308abcd3','nubia','NX651J','android','11']'''
    res = requests.post(url, headers=headers, data=data)
    uid = json.loads(res.text)['uid']  # 解压缩并解析返回的JSON数据以获取UID
    print(f"UID: {uid}")  # 输出UID
    
    # 正式发送跑步的数据包
    url = 'http://xxxxxxxxxxxxxxxxxxxxxxxxxxx/DragonFlyServ/Api/webserver/uploadRunData'
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Connection': 'Keep-Alive',
        'Charset': 'UTF-8',
        'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 11; NX651J Build/RKQ1.200826.002)',
        'Host': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'Accept-Encoding': 'gzip',
        'Content-Length': str(len(data2))
    }
    intervalTime = 0
    begintime = 1695720877
    for i in range(1, 43):  # 1-43,每次上传3公里左右
        begintime = begintime + intervalTime
        usetime = random.randint(1064 - 300, 1064 + 300)  # 1064.0
        endtime = usetime + 1 + begintime
        distance = random.randint(3100, 3300)  # 3010.0
        speed = format(distance / usetime, '.16f')  # 2.8289473684210527
        intervalTime = random.randint(86400 - 500, 86400 + 500)
        baseData = {
            "begintime": str(begintime),
            "endtime": str(endtime),
            "uid": str(uid),
            "schoolno": "xxxxxxx",
            "distance": str(distance),
            "speed": speed,
            "studentno": "xxxxxxxxxxxxxxx",
            "atttype": "3",
            "eventno": "801",
            "location": ...
    

    请注意,修改后的代码是根据以上的问题分析和解决方法进行的处理,但无法确定是否涵盖了所有的问题和错误。如果将来再遇到新的错误,请根据具体的报错信息进行调试和修复。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月25日