49
49
import java .util .ArrayList ;
50
50
import java .util .Arrays ;
51
51
import java .util .List ;
52
+ import java .util .Locale ;
52
53
import java .util .HashMap ;
53
54
54
55
import java .util .concurrent .TimeUnit ;
@@ -115,6 +116,7 @@ enum ResponseFormat {
115
116
boolean timeout = false ;
116
117
ArrayList <String > redirects = new ArrayList <>();
117
118
OkHttpClient client ;
119
+ Locale httpHeaderLocale = Locale .ENGLISH ;
118
120
119
121
public RNFetchBlobReq (ReadableMap options , String taskId , String method , String url , ReadableMap headers , String body , ReadableArray arrayBody , OkHttpClient client , final Callback callback ) {
120
122
this .method = method .toUpperCase ();
@@ -300,14 +302,14 @@ else if (value.equalsIgnoreCase("utf8"))
300
302
responseFormat = ResponseFormat .UTF8 ;
301
303
}
302
304
else {
303
- builder .header (key .toLowerCase (), value );
304
- mheaders .put (key .toLowerCase (), value );
305
+ builder .header (key .toLowerCase (httpHeaderLocale ), value );
306
+ mheaders .put (key .toLowerCase (httpHeaderLocale ), value );
305
307
}
306
308
}
307
309
}
308
310
309
311
if (method .equalsIgnoreCase ("post" ) || method .equalsIgnoreCase ("put" ) || method .equalsIgnoreCase ("patch" )) {
310
- String cType = getHeaderIgnoreCases (mheaders , "Content-Type" ).toLowerCase ();
312
+ String cType = getHeaderIgnoreCases (mheaders , "Content-Type" ).toLowerCase (httpHeaderLocale );
311
313
312
314
if (rawRequestBodyArray != null ) {
313
315
requestType = RequestType .Form ;
@@ -323,7 +325,7 @@ else if(cType.isEmpty()) {
323
325
|| rawRequestBody .startsWith (RNFetchBlobConst .CONTENT_PREFIX )) {
324
326
requestType = RequestType .SingleFile ;
325
327
}
326
- else if (cType .toLowerCase ().contains (";base64" ) || cType .toLowerCase ().startsWith ("application/octet" )) {
328
+ else if (cType .toLowerCase ().contains (";base64" ) || cType .toLowerCase (httpHeaderLocale ).startsWith ("application/octet" )) {
327
329
cType = cType .replace (";base64" ,"" ).replace (";BASE64" ,"" );
328
330
if (mheaders .containsKey ("content-type" ))
329
331
mheaders .put ("content-type" , cType );
@@ -717,7 +719,7 @@ private boolean isBlobResponse(Response resp) {
717
719
boolean isCustomBinary = false ;
718
720
if (options .binaryContentTypes != null ) {
719
721
for (int i = 0 ; i < options .binaryContentTypes .size ();i ++) {
720
- if (ctype .toLowerCase ().contains (options .binaryContentTypes .getString (i ).toLowerCase ())) {
722
+ if (ctype .toLowerCase (httpHeaderLocale ).contains (options .binaryContentTypes .getString (i ).toLowerCase ())) {
721
723
isCustomBinary = true ;
722
724
break ;
723
725
}
@@ -729,13 +731,13 @@ private boolean isBlobResponse(Response resp) {
729
731
private String getHeaderIgnoreCases (Headers headers , String field ) {
730
732
String val = headers .get (field );
731
733
if (val != null ) return val ;
732
- return headers .get (field .toLowerCase ()) == null ? "" : headers .get (field .toLowerCase ());
734
+ return headers .get (field .toLowerCase (httpHeaderLocale )) == null ? "" : headers .get (field .toLowerCase (Locale . English ));
733
735
}
734
736
735
737
private String getHeaderIgnoreCases (HashMap <String ,String > headers , String field ) {
736
738
String val = headers .get (field );
737
739
if (val != null ) return val ;
738
- String lowerCasedValue = headers .get (field .toLowerCase ());
740
+ String lowerCasedValue = headers .get (field .toLowerCase (httpHeaderLocale ));
739
741
return lowerCasedValue == null ? "" : lowerCasedValue ;
740
742
}
741
743
0 commit comments