Ich habe das Pech, eine bestehende mobile Anwendung in Appcelerator weiter zu entwickeln. Die App verwendet eine Rest-API auf einem Remote-Server zum Lesen und Schreiben von Daten. Die API funktioniert gut in Testumgebungen und in der Produktion. Ich muss Daten an die API senden und die Ausgabe lesen. Hier ist ein Beispiel dafür, was die Ausgabe der API sieht aus wie nach einem POST-Befehl:Wie Abrufen von Daten aus Ruhe API In Appcelerator
{
"equipment":
{
"result": "create",
"id": 419213
},
"_meta":
{
"offset": 0,
"limit": -1,
"total_results": 1,
"url": "http://localhost:8080/api/v1/equipment",
"utc_start_time": 1459449461115,
"nano_total_time": 74771
}
}
ich in der Lage bin, um erfolgreich die Daten in Appcelerator zu posten. Ich habe dies in der Datenbank verifiziert, auf die die CRUD-Operation wirkt. Allerdings kann ich die oben genannten Daten nicht von dem httpClient-Objekt abrufen, das den Aufruf ausführt, obwohl ich die Anweisungen in der veralteten Titanium-Dokumentation befolge.
Hier ist mein Appcelerator Code:
var payload = "name=atad&asset_number=adtasd&department_id=185080&property_id=10086&designator_id=379828&is_leased=N&is_assignable_asset=N&status=A";
var url = "http://localhost:8080/api/v1/equipment";
var client = Ti.Network.createHTTPClient({
onload : function(e) {
Ti.API.info(e); // {}
Ti.API.info(e.source); // []
Ti.API.info(JSON.stringify(e.source)); // {}
Ti.API.info(JSON.stringify(e.source.reponseText)); // null
Ti.API.info(JSON.stringify(e.source.reponseData)); // null
Ti.API.info(this); // []
console.log(JSON.stringify(this)); // {}
Ti.API.info(JSON.stringify(this.reponseText)); // null
Ti.API.info(this.reponseData); // null
}
,onerror : function(e){
Ti.API.info(e);
alert("error");
}
});
var auth = 'Basic ' + Ti.App.Properties.getString('auth');
client.open("POST", apiUrl);
client.setRequestHeader('Authorization', auth);
client.setRequestHeader('Content-Type', 'text/plain');
client.send(payload);
Hier ist die Ausgabe der Konsole:
[INFO] : {
[INFO] : code = 0;
[INFO] : source = "[object TiNetworkHTTPClient]";
[INFO] : success = 1;
[INFO] : type = load;
[INFO] : }
[INFO] : [object TiNetworkHTTPClient]
[INFO] : {"method":"POST","url":"http://localhost:8080/api/v1/equipment"}
[INFO] : <null>
[INFO] : <null>
[INFO] : [object TiNetworkHTTPClient]
[INFO] : {"method":"POST","url":"http://localhost:8080/api/v1/equipment"}
[INFO] : <null>
[INFO] : <null>
Die Dokumentation hier http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Network.HTTPClient sagt ausdrücklich this.responseText zu verwenden, aber das gibt mir eindeutig nicht die Ergebnisse, die ich brauche. Ich brauche diese "ID", die vom Server zurückgegeben wird.
Wie lese ich die Daten, die nach einem Post-API-Aufruf vom Server zurückgegeben werden?
einfach so! Jede "Antwort" ist falsch in ihrem/ihrem Code –
Ja, es sieht so aus, als ob das alles wäre. Danke. Ich verstehe nicht, warum die Ausgabe von this.response nicht in der Konsole für die Zeile "console.log (JSON.stringify (this))" erscheint. – user3188777