How to Make HTTP Requests In React Native IOS application?

こ雲淡風輕ζ 提交于 2019-12-04 23:38:08

问题


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.


回答1:


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




回答2:


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




回答3:


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.



来源:https://stackoverflow.com/questions/42666142/how-to-make-http-requests-in-react-native-ios-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!