2016-09-11 8 views
1

Der Versuch, eine POST-Anfrage in React unter Verwendung des folgenden Codes zu stellen. Um die Privatsphäre zu wahren, habe ich die tatsächlichen Parameter gelöscht und falsche für die URL-, Accesskey- und varArgs-Variablen eingefügt. Wenn ich versuche, die Anfrage zu starten, bekomme ich - "Fehler: Kann keine leere URL laden". Meine URL-Variable ist eine gültige Zeichenfolge und die Post-Anfrage funktioniert gut von curl. Kann jemand sehen, was ich falsch mache?Native Post-Fehler reagieren 'Leere URL kann nicht geladen werden'

import React, { Component } from 'react'; 
import { 
    AppRegistry, 
    StyleSheet, 
    Text, 
    View, 
    TouchableHighlight, 
    Picker 
} from 'react-native'; 

var vsprintf = require('sprintf-js').vsprintf 

class plantMetrics extends Component { 
    constructor(props){ 
    super(props) 

    const url = 'http://myurl.com' 
    const accessKey = 'myaccesskey' 
    const varArgs = '{"arg1":"val1"}' 

    this.state = { 
     catalogMeta: 'shit', 
     workspace: '', 
     measure: '', 
     bu: '', 
     country: '', 
     plant: '', 
     region: '' 
    } 
    } 
    getCatalogInfo(){ 
    fetch(this.url, { 
     method: "POST", 
     headers: { 
     'Content-Type': 'application/json', 
     'Authorization': this.accessKey 
     }, 
     body: this.varArgs 
    }) 
    .then((response) => response.json()) 
    .then((responseJson) => { 
     this.setState({catalogMeta: JSON.stringify(responseJson.body)}) 
    }) 
    .catch((error) => {  
     this.setState({catalogMeta: 'error: ' + error}) 
    }) 
    } 

    render() { 
    return (
     <View> 
     <Text>{"\n"}</Text> 
     <Text>{this.state.catalogMeta}</Text> 
     <TouchableHighlight onPress={this.getCatalogInfo.bind(this)}> 
      <Text>Fetch</Text> 
     </TouchableHighlight> 
     </View> 
    ); 
    } 

Antwort

0

Die Variablen unter

const url = 'http://myurl.com' 
const accessKey = 'myaccesskey' 
const varArgs = '{"arg1":"val1"}' 

sind nur in dem Umfang in constructor Methode. Um sie zugänglich über this zu machen, setzen sie mit this:

this.url = 'http://myurl.com' 
this.accessKey = 'myaccesskey' 
this.varArgs = '{"arg1":"val1"}' 
+0

Rookie Fehler, arbeitet jetzt Dank. – kayzej1141

Verwandte Themen