react-native-fetch-blob
react-native-fetch-blob copied to clipboard
ios crash (-[__NSCFNumber length]: unrecognized selector) when sending integer values for headers
version info:
"react": "16.0.0-alpha.12",
"react-native": "0.45.1",
"react-native-fetch-blob": "^0.10.6"
example request:
import RNFetchBlob from 'react-native-fetch-blob'
const badHeaderExample = function () {
let b64 = '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'
return RNFetchBlob.fetch(
'POST',
'https://google.com/',
{
integer: 1,
'Content-Type': 'application/octet-stream'
},
b64
)
.then(r => console.log(r))
.catch(e => console.log(e))
}
produces:
<Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0x79916250'
*** First throw call stack:
(
0 CoreFoundation 0x01dc2ded __exceptionPreprocess + 189
1 libobjc.A.dylib 0x00d78d6f objc_exception_throw + 49
2 CoreFoundation 0x01e345b8 -[NSObject(NSObject) doesNotRecognizeSelector:] + 136
3 CoreFoundation 0x01d48a8d ___forwarding___ + 941
4 CoreFoundation 0x01d486be _CF_forwarding_prep_0 + 14
5 CoreFoundation 0x01cdfff2 CFStringGetLength + 130
6 CFNetwork 0x016e4602 _ZN15HTTPHeaderValue7isValidEPK10__CFString + 20
7 CFNetwork 0x016e4567 _ZN11HTTPMessage25setHeaderFieldStringValueEPK10__CFStringS2_ + 43
8 CFNetwork 0x016ecc36 _ZN11HTTPMessage23setMultipleHeaderFieldsEPK14__CFDictionary + 140
9 CFNetwork 0x0176276e CFURLRequestSetMultipleHTTPHeaderFields + 133
10 CFNetwork 0x017626e3 -[NSMutableURLRequest(NSMutableHTTPURLRequest) setAllHTTPHeaderFields:] + 44
11 prymr 0x0036fd7e __85+[RNFetchBlobReqBuilder buildOctetRequest:taskId:method:url:headers:body:onComplete:]_block_invoke + 4910
12 libdispatch.dylib 0x05cab8cf _dispatch_call_block_and_release + 15
13 libdispatch.dylib 0x05cce08b _dispatch_client_callout + 14
14 libdispatch.dylib 0x05cb35a0 _dispatch_queue_override_invoke + 682
15 libdispatch.dylib 0x05cb4fb6 _dispatch_root_queue_drain + 502
16 libdispatch.dylib 0x05cb4d58 _dispatch_worker_thread3 + 133
17 libsystem_pthread.dylib 0x0602bc7a _pthread_wqthread + 1070
18 libsystem_pthread.dylib 0x0602b826 start_wqthread + 34
if you change the code to send the string "1" everything works fine
expected behaviour: throw error instead of crashing
@jackdoe , since the arguments(headers) you passed to native context, will be treated as string
, you have to ensure every entry has a string value.
return RNFetchBlob.fetch(
'POST',
'https://google.com/',
{
- integer: 1,
+ integer: '1',
'Content-Type': 'application/octet-stream'
},
b64
)
@wkh237 yea that is what i said, i just expected normal error instead of a crash, even though it is written explicitly; up to you of course, i think its fine to close the issue, now that other people can find it as well
@jackdoe , thanks for the advice, will improve the error message so that it's more clear 👍
this error was coming in array. which is the array has integer value but we init in string charater
so that we need to convert the integer value into string then init into string....................
thanks