/** * The examples provided by Facebook are for non-commercial testing and * evaluation purposes only. * * Facebook reserves all rights not expressly granted. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * @noflow */ 'use strict'; var React = require('react'); var ReactNative = require('react-native'); var { StyleSheet, Text, TouchableHighlight, View, } = ReactNative; class XHRExampleHeaders extends React.Component { xhr: XMLHttpRequest; cancelled: boolean; constructor(props) { super(props); this.cancelled = false; this.state = { status: '', headers: '', contentSize: 1, downloaded: 0, }; } download() { this.xhr && this.xhr.abort(); var xhr = this.xhr || new XMLHttpRequest(); xhr.onreadystatechange = () => { if (xhr.readyState === xhr.DONE) { if (this.cancelled) { this.cancelled = false; return; } if (xhr.status === 200) { this.setState({ status: 'Download complete!', headers: xhr.getAllResponseHeaders() }); } else if (xhr.status !== 0) { this.setState({ status: 'Error: Server returned HTTP status of ' + xhr.status + ' ' + xhr.responseText, }); } else { this.setState({ status: 'Error: ' + xhr.responseText, }); } } }; xhr.open('GET', 'https://httpbin.org/response-headers?header1=value&header2=value1&header2=value2'); xhr.send(); this.xhr = xhr; this.setState({status: 'Downloading...'}); } componentWillUnmount() { this.cancelled = true; this.xhr && this.xhr.abort(); } render() { var button = this.state.status === 'Downloading...' ? ( ... ) : ( Get headers ); return ( {button} {this.state.headers} ); } } var styles = StyleSheet.create({ wrapper: { borderRadius: 5, marginBottom: 5, }, button: { backgroundColor: '#eeeeee', padding: 8, }, }); module.exports = XHRExampleHeaders;