Führen Sie nach der Anfrage in iOS Swift
Ich versuche, führen Sie eine POST-Anforderung, und der Antrag geht nicht durch. Ich habe mir durch Führen Sie nach der Anfrage im Swift schon, aber es enthält nicht das, was ich Suche.
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
var request = NSMutableURLRequest(URL: NSURL(string: "https://us1.lacunaexpanse.com"))
println("request url https://us1.lacunaexpanse.com")
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST"
let apikey = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
println("apikey",apikey)
let username = "username"
let password = "password"
var login = Array(["username", "password", "apikey"])
let jsonDictionary = ["2.0", "jsonrpc", "1", "id", "login", "method", "login", "params"]
println("jsonDictionary",jsonDictionary)
var writeError: NSError?
let jsonData = NSJSONSerialization.dataWithJSONObject(jsonDictionary, options: NSJSONWritingOptions(), error: NSErrorPointer())
var resultAsString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)
resultAsString = resultAsString.stringByAppendingString("empire")
let url = NSURL.URLWithString("string")
println("url",url)
var request2 = NSMutableURLRequest()
println("Post url =%@",url)
request2 = NSMutableURLRequest(URL:url)
request2.HTTPMethod = "POST"
var connection = NSURLConnection(request: request, delegate: self, startImmediately: false)
return true
Ich denke, man sollte wirklich nicht posten vollständigen URLs API-keys...
Auch die, die Sie bearbeitet haben, jede Menge bits vor der Buchung, bis zu dem Punkt, dass wir nicht wirklich wissen, was ist eigentlich falsch-code und was ist einfach nur schlecht Bearbeiten. Verwenden Sie
Auch die, die Sie bearbeitet haben, jede Menge bits vor der Buchung, bis zu dem Punkt, dass wir nicht wirklich wissen, was ist eigentlich falsch-code und was ist einfach nur schlecht Bearbeiten. Verwenden Sie
request2
dann request
deklarieren Sie eine login
array, aber verwenden Sie es nicht, Sie einige Zeit, Zeichenfolgen verwenden, anstatt die Variablen, die Sie sollen, das Anhängen von "empire" scheint mehr als verdächtig... Post eigentlichen code nur mit dem API-Schlüssel, Benutzernamen, Passwort und die Basis-URL geändert, und sagen Sie uns, was die Ergebnisse Ihrer Spuren sind...InformationsquelleAutor Number1 | 2014-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine ganze Reihe von taktischen Fragen hier:
Erstellen Sie
NSURLSession
, aber dann die AusgabeNSURLConnection
Anfrage. Wählen Sie eine oder das andere (Sie könnte genauso gut verwendenNSURLSession
).Ihre "Wunsch-Wörterbuch" ist kein Lexikon, sondern ein array. Zum Beispiel zur Ausgabe der JSON-RPC-Anfrage das richtige format des Wörterbuchs ist:
Kleinere Problem, aber Sie verwenden eine Menge von Variablen (über
var
), wo eine Konstante (überlet
) wäre fein. In den Geist der Swift-Sicherheit, verwenden Sielet
wo immer möglich.Entsprechend der Lacuna Expanse API, Ihre URL sollte, einschließlich den Namen des Moduls.
So, zum Beispiel, wenn dabei
POST
Anforderungen in der "Empire" - Modul, die URL ist:Werden Sie wahrscheinlich zu tun eine Menge von Anfragen, so würde ich empfehlen, den größten Teil des in einer einzigen Funktion, die Sie aufrufen können, wieder und wieder, ohne sich wiederholende code alle über dem Platz. Vielleicht eine Funktion wie die folgende, die folgenden Parameter:
Modul (z.B. "Reich" gegen "Allianz");
Methode (z.B. "login" vs "fetch_captcha");
die geeigneten Parameter für die Anforderung (z.B. für "login", das wäre der "name", "Passwort", und die "api_key"); und
Schließung, die wird aufgerufen, wenn die asynchrone Anforderung abgeschlossen ist.
Diese Funktion bereitet die JSON-RPC Anfrage und fordert die Schließung, wenn die Anfrage beendet:
Dieser hat alle von der notwendigen Verpackung der Methode und Parameter in eine JSON-RPC Anfrage. Dann, alles, was Sie tun müssen, um zu rufen, die Methode ist etwas wie so:
Für eine Anfrage, die erfordert, dass ein Wörterbuch, wie "erstellen", gehen Sie einfach weiter und liefern Wörterbuch:
Klar, in diese über, ich mache nur minimale Fehlerbehandlung, so könnte man Rindfleisch, aber deine Frage war über die Ausgabe
POST
Anfrage, und hoffentlich die oben zeigt, wie ' s gemacht wird.InformationsquelleAutor Rob
Als @jcaron Punkte aus, dieser Beitrag ist voll von schlechten Bearbeitungen. Es gibt eine Menge von Variablen, die verschiedene Namen haben, später in der Funktion und so weiter. Nicht zu erwähnen, sollten Sie NIE posten Sie Ihre api-Schlüssel, der in ein SO die Frage, oder irgendwo auf dem internet für diese Angelegenheit.
Ihre Frage zu beantworten eine post-Anforderung in Swift, es sei denn, Sie müssen unglaublich präzise Kontrolle über den Prozess, nehmen Sie einen Blick auf Alamofire (gleiche Kerl, der schrieb AFNetworking).
Eine POST-Anfrage ist so einfach wie
Alamofire.request(.POST, "http://someapiurl.com")
können Sie auch in einem Wörterbuch von Körper-Parameter, wenn Sie so wählen.InformationsquelleAutor barndog