import requests from tools.log import logger def http_post_proxy_request(url, form_data, headers=None, proxy=None, timeout=30): """ 发送带有 JSON 数据的 POST 请求,并使用代理 参数: - url: 请求的目标 URL - json_data: 要发送的 JSON 数据 - headers: 可选,请求头信息 - proxy: 可选,代理地址,例如 "http://127.0.0.1:10809" - timeout: 可选,请求超时时间,默认为 10 秒 返回值: - response: 请求的响应对象 """ try: # 发送 POST 请求 proxies = {"http": proxy, "https": proxy} if proxy else None response = requests.post(url, data=form_data, headers=headers, proxies=proxies, timeout=timeout) # 检查响应状态码 response.raise_for_status() # 如果状态码为 200,表示请求成功 if response.status_code == 200: return response # # # 获取响应的内容类型 # content_type = response.headers.get('Content-Type', '') # # 如果内容类型为 JSON,解析 JSON 数据 # if 'application/json' in content_type: # json_data = response.json() # return json_data # else: # # 如果内容类型不是 JSON,按照其他方式处理 # logger.error(f"http_post_request:{url}:{response}") # return response.text else: # 如果状态码不为 200,可以根据实际需求处理其他状态码 print(f"Unexpected status code: {response.status_code}") logger.exception(f"http_post_request:{url}:{response}") return None except requests.exceptions.RequestException as e: # 捕获请求异常 logger.exception(f"http_post_request:{url}:{e}:{response}") return None def http_post_request(url, data, timeout=30): try: response = requests.post(url, json=data, timeout=timeout) response.raise_for_status() # 检查请求是否成功 if 200 == response.status_code: return response logger.exception(f"http_post_request - code: {response},url: {url},data: {data}") return None except requests.exceptions.RequestException as req_exc: print(f"HTTP POST request error: {req_exc}") logger.exception(f"http_post_request - Error: {req_exc}, url: {url}, data: {data}") return None except Exception as e: print(f"An unexpected error occurred: {e}") logger.exception(f"http_post_request - Unexpected error: {e}, url: {url}, data: {data}") return None def http_post_request_proxy(url, headers, data, proxy=None, timeout=30): try: proxies = {"http": proxy, "https": proxy} if proxy else None response = requests.post(url, headers=headers, data=data, proxies=proxies, timeout=timeout) response.raise_for_status() # 检查请求是否成功 if 200 == response.status_code: return response logger.error(f"http_post_request - code: {response},url: {url},data: {data}") return None except requests.exceptions.RequestException as req_exc: logger.error(f"http_post_request_proxy - Error: {req_exc}, url: {url}, headers: {headers},data: {data}") return None except Exception as e: logger.error(f"http_post_request_proxy - Unexpected error: {e}, url: {url}, headers: {headers},data: {data}") return None