|  | @@ -130,7 +130,7 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 130 | 130 |     * @param  {any} body Body in RNfetchblob flavor
 | 
	
		
			
			| 131 | 131 |     */
 | 
	
		
			
			| 132 | 132 |    send(body) {
 | 
	
		
			
			| 133 |  | -
 | 
	
		
			
			|  | 133 | +    this._body = body
 | 
	
		
			
			| 134 | 134 |      if(this._readyState !== XMLHttpRequest.OPENED)
 | 
	
		
			
			| 135 | 135 |        throw 'InvalidStateError : XMLHttpRequest is not opened yet.'
 | 
	
		
			
			| 136 | 136 |      let promise = Promise.resolve()
 | 
	
	
		
			
			|  | @@ -141,10 +141,12 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 141 | 141 |      log.verbose(typeof body, body instanceof FormData)
 | 
	
		
			
			| 142 | 142 |  
 | 
	
		
			
			| 143 | 143 |      if(body instanceof Blob) {
 | 
	
		
			
			|  | 144 | +      log.debug('sending blob body', body._blobCreated)
 | 
	
		
			
			| 144 | 145 |        promise = new Promise((resolve, reject) => {
 | 
	
		
			
			| 145 | 146 |            body.onCreated((blob) => {
 | 
	
		
			
			| 146 |  | -            body = RNFetchBlob.wrap(body.getRNFetchBlobRef())
 | 
	
		
			
			| 147 |  | -            resolve()
 | 
	
		
			
			|  | 147 | +              log.debug('body created send request')
 | 
	
		
			
			|  | 148 | +              body = RNFetchBlob.wrap(blob.getRNFetchBlobRef())
 | 
	
		
			
			|  | 149 | +              resolve()
 | 
	
		
			
			| 148 | 150 |            })
 | 
	
		
			
			| 149 | 151 |          })
 | 
	
		
			
			| 150 | 152 |      }
 | 
	
	
		
			
			|  | @@ -158,6 +160,10 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 158 | 160 |      }
 | 
	
		
			
			| 159 | 161 |  
 | 
	
		
			
			| 160 | 162 |      promise.then(() => {
 | 
	
		
			
			|  | 163 | +      log.debug('send request invoke', body)
 | 
	
		
			
			|  | 164 | +      for(let h in _headers) {
 | 
	
		
			
			|  | 165 | +        _headers[h] = _headers[h].toString()
 | 
	
		
			
			|  | 166 | +      }
 | 
	
		
			
			| 161 | 167 |        this._task = RNFetchBlob
 | 
	
		
			
			| 162 | 168 |                      .config({
 | 
	
		
			
			| 163 | 169 |                        auto: true,
 | 
	
	
		
			
			|  | @@ -224,10 +230,10 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 224 | 230 |    }
 | 
	
		
			
			| 225 | 231 |  
 | 
	
		
			
			| 226 | 232 |    getResponseHeader(field:string):string | null {
 | 
	
		
			
			| 227 |  | -    log.verbose('XMLHttpRequest get header', field)
 | 
	
		
			
			|  | 233 | +    log.verbose('XMLHttpRequest get header', field, this._responseHeaders)
 | 
	
		
			
			| 228 | 234 |      if(!this._responseHeaders)
 | 
	
		
			
			| 229 | 235 |        return null
 | 
	
		
			
			| 230 |  | -    return this.responseHeaders[field] || null
 | 
	
		
			
			|  | 236 | +    return (this._responseHeaders[field] || this._responseHeaders[field.toLowerCase()]) || null
 | 
	
		
			
			| 231 | 237 |  
 | 
	
		
			
			| 232 | 238 |    }
 | 
	
		
			
			| 233 | 239 |  
 | 
	
	
		
			
			|  | @@ -238,9 +244,10 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 238 | 244 |      let result = ''
 | 
	
		
			
			| 239 | 245 |      let respHeaders = this.responseHeaders
 | 
	
		
			
			| 240 | 246 |      for(let i in respHeaders) {
 | 
	
		
			
			| 241 |  | -      result += `${i}:${respHeaders[i]}\r\n`
 | 
	
		
			
			|  | 247 | +      result += `${i}: ${respHeaders[i]}${String.fromCharCode(0x0D,0x0A)}`
 | 
	
		
			
			| 242 | 248 |      }
 | 
	
		
			
			| 243 |  | -    return result
 | 
	
		
			
			|  | 249 | +    console.log('###', result.substr(0, result.length-2))
 | 
	
		
			
			|  | 250 | +    return result.substr(0, result.length-2)
 | 
	
		
			
			| 244 | 251 |    }
 | 
	
		
			
			| 245 | 252 |  
 | 
	
		
			
			| 246 | 253 |    _headerReceived(e) {
 | 
	
	
		
			
			|  | @@ -310,9 +317,12 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 310 | 317 |        let info = resp.respInfo || {}
 | 
	
		
			
			| 311 | 318 |        switch(info.respType) {
 | 
	
		
			
			| 312 | 319 |          case 'json' :
 | 
	
		
			
			|  | 320 | +        try{
 | 
	
		
			
			| 313 | 321 |            this._responseText = resp.text()
 | 
	
		
			
			| 314 | 322 |            this._response = resp.json()
 | 
	
		
			
			| 315 | 323 |            responseDataReady()
 | 
	
		
			
			|  | 324 | +        } catch(err) {
 | 
	
		
			
			|  | 325 | +        }
 | 
	
		
			
			| 316 | 326 |          break;
 | 
	
		
			
			| 317 | 327 |          case 'blob' :
 | 
	
		
			
			| 318 | 328 |            resp.blob().then((b) => {
 | 
	
	
		
			
			|  | @@ -322,7 +332,6 @@ export default class XMLHttpRequest extends XMLHttpRequestEventTarget{
 | 
	
		
			
			| 322 | 332 |            })
 | 
	
		
			
			| 323 | 333 |          break;
 | 
	
		
			
			| 324 | 334 |          default :
 | 
	
		
			
			| 325 |  | -        console.log(resp, resp.text())
 | 
	
		
			
			| 326 | 335 |            this._responseText = resp.text()
 | 
	
		
			
			| 327 | 336 |            this._response = this.responseText
 | 
	
		
			
			| 328 | 337 |            responseDataReady()
 |