@@ -38,10 +38,10 @@ async def read(self, sz=-1):
38
38
return self ._decode (await self .content .read (sz ))
39
39
40
40
async def text (self , encoding = "utf-8" ):
41
- return (await self .read (sz = - 1 )).decode (encoding )
41
+ return (await self .read (int ( self . headers . get ( "Content-Length" , - 1 )) )).decode (encoding )
42
42
43
43
async def json (self ):
44
- return _json .loads (await self .read ())
44
+ return _json .loads (await self .read (int ( self . headers . get ( "Content-Length" , - 1 )) ))
45
45
46
46
def __repr__ (self ):
47
47
return "<ClientResponse %d %s>" % (self .status , self .headers )
@@ -121,7 +121,7 @@ async def _request(self, method, url, data=None, json=None, ssl=None, params=Non
121
121
if b"chunked" in line :
122
122
chunked = True
123
123
elif line .startswith (b"Location:" ):
124
- url = line .rstrip ().split (None , 1 )[1 ].decode ("latin-1" )
124
+ url = line .rstrip ().split (None , 1 )[1 ].decode ()
125
125
126
126
if 301 <= status <= 303 :
127
127
redir_cnt += 1
@@ -195,28 +195,33 @@ async def request_raw(
195
195
if "Host" not in headers :
196
196
headers .update (Host = host )
197
197
if not data :
198
- query = "%s /%s %s\r \n %s\r \n " % (
198
+ query = b "%s /%s %s\r \n %s\r \n " % (
199
199
method ,
200
200
path ,
201
201
version ,
202
202
"\r \n " .join (f"{ k } : { v } " for k , v in headers .items ()) + "\r \n " if headers else "" ,
203
203
)
204
204
else :
205
- headers .update (** {"Content-Length" : len (str (data ))})
206
205
if json :
207
206
headers .update (** {"Content-Type" : "application/json" })
208
- query = """%s /%s %s\r \n %s\r \n %s\r \n \r \n """ % (
207
+ if isinstance (data , bytes ):
208
+ headers .update (** {"Content-Type" : "application/octet-stream" })
209
+ else :
210
+ data = data .encode ()
211
+
212
+ headers .update (** {"Content-Length" : len (data )})
213
+ query = b"""%s /%s %s\r \n %s\r \n %s""" % (
209
214
method ,
210
215
path ,
211
216
version ,
212
217
"\r \n " .join (f"{ k } : { v } " for k , v in headers .items ()) + "\r \n " ,
213
218
data ,
214
219
)
215
220
if not is_handshake :
216
- await writer .awrite (query . encode ( "latin-1" ) )
221
+ await writer .awrite (query )
217
222
return reader
218
223
else :
219
- await writer .awrite (query . encode () )
224
+ await writer .awrite (query )
220
225
return reader , writer
221
226
222
227
def request (self , method , url , data = None , json = None , ssl = None , params = None , headers = {}):
0 commit comments