简体   繁体   中英

Fetch with Post method in React-Native

I'm trying to do a fetch with the post method in my react-native, but I receive always an error:

TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (whatwg-fetch.js:504)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:580)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:394)
at XMLHttpRequest.js:507
at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
at MessageQueue.__callFunction (MessageQueue.js:366)
at MessageQueue.js:106
at MessageQueue.__guard (MessageQueue.js:314)
at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:105)

User creationg page

static createUser(Identity, FirstName, LastName, FiscalCode , Email) {

    let formdata = new FormData();
    formdata.append('Identity', JSON.stringify(Identity));
    formdata.append('FirstName', (FirstName));
    formdata.append('LastName', LastName);
    formdata.append('FiscalCode', FiscalCode);
    formdata.append('Email', Email);



    return new Promise((resolve, reject)=> {

        fetch('https://linktomyapi.com' , {
            method: 'POST',
            headers: {
                'Content-Type': 'multipart/form-data',
                },
           body: formdata
        })
        .then((response) => response.json())
        .then((responseData) => {
            if(responseData.Error){
                Alert.alert("Errore");
            }
            global.utente = responseData;
            resolve(responseData)
        })
        .catch((err) => {reject(err)})
    })
}

About Identity, I take in this way:

let Identity = 
           {
               AppName: 
               {
                    Username: this.state.FiscalCode,
                    Password: this.state.Password
               }
           }

I follow many guides about this argoument, but I don't understand why I receive these errors.

Can you try the following?

let params = {
Identity: JSON.stringify(Identity),
FirstName: FirstName,
LastName: LastName,
FiscalCode: FiscalCode,
Email: Email
}
return new Promise((resolve, reject)=> {

        fetch('https://linktomyapi.com' , {
            method: 'POST',
            headers: {
                "Content-Type": "application/json",
                },
           ...(params && { body: JSON.stringify(params) })
        })
        .then((response) => response.json())
        .then((responseData) => {
            if(responseData.Error){
                Alert.alert("Errore");
            }
            global.utente = responseData;
            resolve(responseData)
        })
        .catch((err) => {reject(err)})
    })

Are sure your content type is formdata?

The problem is there:

return new Promise((resolve, reject)=> {

        fetch('https://linktomyapi.com' , {
            method: 'POST',
            headers: {
                'Content-Type': 'multipart/form-data',
                },
           body: formdata
        })

In the fetch I pass the link as a string.

So the correct form is:

return new Promise((resolve, reject)=> {

        fetch(https://linktomyapi.com , {
            method: 'POST',
            headers: {
                'Content-Type': 'multipart/form-data',
                },
           body: formdata
        })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM