Saravana Kumar
Saravana Kumar

Reputation: 3396

How to Make HTTP Requests In React Native IOS application?

fetch('http://119.9.52.47:3000/api/countries', {
       method: 'POST',
       headers: { 'Accept': 'application/json','Content-Type': 'application/json'},
   }).then((response) => response.json())
     .then((responseData) => {
           console.log(responseData);
       })

Here is my code . But that's not work.

Upvotes: 8

Views: 22308

Answers (3)

Nitesh Mishra
Nitesh Mishra

Reputation: 574

you can try like this for send data to server(POST)

let response = await fetch(
    'http://your_url', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        username: this.state.name,//data which u want to send
        password: this.state.password,
      })
  });
  let responseText = await response.text();
  if (response.status >= 200 && response.status < 300){
    Alert.alert('Server response', responseText)

  }
  else {
    let error = responseText;
    throw error
    //Alert.alert('Login', error)
  }
} catch(errors) {
  Alert.alert('Login', errors)

  Actions.Documents();
}

Edit: As latest iOS sdk enforces connection to be in https protocol instead of http.you can add an exception to your domain inside info.plist file of the Xcode project.

if you want to allow everything write this inside info.plist

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
    <key>yourdomain.com</key>
    <dict>
        <!--Include to allow subdomains-->
        <key>NSIncludesSubdomains</key>
        <true/>
        <!--Include to allow HTTP requests-->
        <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
        <true/>
        <!--Include to specify minimum TLS version-->
        <key>NSTemporaryExceptionMinimumTLSVersion</key>
        <string>TLSv1.1</string>
    </dict>
 </dict>
</dict>

for more info check this out https://stackoverflow.com/a/31623388/7604342

Upvotes: 10

Andrey Patseiko
Andrey Patseiko

Reputation: 4495

You can use normal fetch function, only add you http host into exception. In your XCode.

enter image description here

Upvotes: 4

Moti Azu
Moti Azu

Reputation: 5442

Quoting Network docs:

By default, iOS will block any request that's not encrypted using SSL. If you need to fetch from a cleartext URL (one that begins with http) you will first need to add an App Transport Security exception.

Your request is http, so you need to either add the address as an App Transport Security exception in your ios app, or use https.

Upvotes: 0

Related Questions