import requests
def safe_http_request(url, method='GET', data=None, headers=None, timeout=5):
"""
Makes an HTTP request with graceful fallback for errors.
Args:
url (str): The URL to request.
method (str): The HTTP method (GET, POST, etc.). Defaults to GET.
data (dict or str): The data to send with the request (for POST, etc.). Defaults to None.
headers (dict): The headers to include in the request. Defaults to None.
timeout (int): Timeout in seconds. Defaults to 5.
Returns:
requests.Response or None: The response object if successful, None otherwise.
"""
try:
response = requests.request(method, url, data=data, headers=headers, timeout=timeout)
response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
return response
except requests.exceptions.RequestException as e:
print(f"HTTP request failed: {e}")
return None
if __name__ == '__main__':
# Example Usage:
url = "https://httpstat.us/500" # Simulates a server error
response = safe_http_request(url)
if response:
print("Request successful!")
print(response.status_code)
#print(response.text) # Uncomment to print response content
else:
print("Request failed.")
Add your comment