or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

cli.mdclient.mdconfiguration.mdindex.mdmodels.mdplugins.mdsessions.mdutilities.md

client.mddocs/

0

# HTTP Client

1

2

HTTPie's HTTP client module provides low-level functions for building and sending HTTP requests programmatically.

3

4

```python

5

from httpie.client import collect_messages, build_requests_session, make_request_kwargs, make_send_kwargs, finalize_headers

6

from httpie.context import Environment

7

from httpie.models import RequestsMessage

8

from typing import Iterable, Callable

9

import argparse

10

import requests

11

```

12

13

## Capabilities

14

15

### Message Collection

16

17

Core function for collecting HTTP request and response messages.

18

19

```python { .api }

20

def collect_messages(

21

env: Environment,

22

args: argparse.Namespace,

23

request_body_read_callback: Callable[[bytes], None] = None,

24

) -> Iterable[RequestsMessage]:

25

"""

26

Core message collection and HTTP execution.

27

28

Args:

29

env: HTTPie environment instance

30

args: Parsed command-line arguments

31

request_body_read_callback: Optional callback for request body streaming

32

33

Yields:

34

RequestsMessage: HTTP request and response messages

35

"""

36

```

37

38

### Session Building

39

40

Functions for building HTTP sessions with custom configurations.

41

42

```python { .api }

43

def build_requests_session(

44

session_name: str = None,

45

config_dir: str = None,

46

read_only: bool = False,

47

**session_kwargs

48

) -> requests.Session:

49

"""

50

Build a requests session with HTTPie configurations.

51

52

Args:

53

session_name: Name of persistent session

54

config_dir: Configuration directory path

55

read_only: Whether session should be read-only

56

**session_kwargs: Additional session configuration

57

58

Returns:

59

requests.Session: Configured HTTP session

60

"""

61

```

62

63

### Request Preparation

64

65

Utilities for preparing HTTP request parameters.

66

67

```python { .api }

68

def make_request_kwargs(

69

args: argparse.Namespace,

70

base_headers: dict = None

71

) -> dict:

72

"""

73

Build keyword arguments for requests.request().

74

75

Args:

76

args: Parsed command-line arguments

77

base_headers: Base headers to include

78

79

Returns:

80

dict: Request keyword arguments

81

"""

82

83

def make_send_kwargs(args: argparse.Namespace) -> dict:

84

"""

85

Build keyword arguments for session.send().

86

87

Args:

88

args: Parsed command-line arguments

89

90

Returns:

91

dict: Send keyword arguments

92

"""

93

94

def finalize_headers(headers: dict) -> dict:

95

"""

96

Finalize headers before sending request.

97

98

Args:

99

headers: Request headers dictionary

100

101

Returns:

102

dict: Finalized headers

103

"""

104

```

105

106

### Usage Examples

107

108

#### Basic Message Collection

109

110

```python

111

from httpie.core import main

112

from httpie.client import collect_messages

113

from httpie.context import Environment

114

from httpie.cli.definition import parser

115

116

# Parse arguments

117

env = Environment()

118

args = parser.parse_args(['GET', 'httpie.io/hello'], env=env)

119

120

# Collect messages

121

for message in collect_messages(env, args):

122

if hasattr(message, 'status_code'):

123

print(f"Response: {message.status_code}")

124

else:

125

print(f"Request: {message.method}")

126

```

127

128

#### Custom Session Building

129

130

```python

131

from httpie.client import build_requests_session

132

133

# Build session with custom configuration

134

session = build_requests_session(

135

session_name='api-client',

136

timeout=30,

137

verify=True

138

)

139

140

# Use session for requests

141

response = session.get('https://api.example.com/data')

142

```

143

144

#### Request Preparation

145

146

```python

147

from httpie.client import make_request_kwargs

148

from httpie.cli.definition import parser

149

from httpie.context import Environment

150

151

# Parse arguments

152

env = Environment()

153

args = parser.parse_args(['POST', 'api.example.com', 'name=John'], env=env)

154

155

# Prepare request kwargs

156

request_kwargs = make_request_kwargs(args)

157

print(f"Method: {request_kwargs['method']}")

158

print(f"URL: {request_kwargs['url']}")

159

print(f"Data: {request_kwargs.get('data', 'None')}")

160

```