Swift - asmx Request

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Aufgrund der Corona-Krise: Die Veröffentlichung von Stellenangeboten und -gesuchen ist bis 31.3.2023 kostenfrei. Das beinhaltet auch Angebote und Gesuche von und für Freischaffende und Selbstständige.

  • Swift - asmx Request

    Hallo,

    ich bin vollkommen neu in Sachen Swift und Xcode. Ich möchte eine einfache Login Page erstellen und die Eingabe
    gegen meine Datenbank prüfen. Eingabema View ist fertig. asmx Webservice in c# ist fertig unf funktioniert auch. Habe
    es auch über Safari geteset.

    Wenn ich nun aber beim Login diesen aufrufen möchte, funktioniert das leide rnicht.

    Quellcode

    1. let urlS = URL(string: "https://bla.bla.at?kundeS=Test&userS=Test&passwS=Test")!
    2. URLSession.shared.dataTask(with: urlS, completionHandler: {(data, response, error) in
    3. guard let data = data, errror == nil else { print(error!); return}
    Was schon komisch ist, der Parameter kundeS darf keine Leerzeichen enthalten, ansonste ist urlS = nil
    Avber Zeile 3 und 4 führt immer zum resume am Ende. Und _reserved = (void *) NULL ???

    Wasrum geht das nicht, bzw. wie kann ich den Fehler überhaupt finden. Wenn man aus der Microsoft Welt kommt
    ist Swift und XCode schon sehr gewöhnungsbedürftig.

    Vielen Dank
    lg
    WW
  • WiglWagl schrieb:

    Was schon komisch ist, der Parameter kundeS darf keine Leerzeichen enthalten, ansonste ist urlS = nil
    Nee, so wie Du das hingeschrieben passt das schon, dass kundeS keine Leerzeichen haben darf, da das ja encoded ist. Google mal nach http da werden die verschiedenen Arten von Requests, URL-Encoding, Daten im Header/Body usw. erklärt. Wenn Du diese Grundlagen beherrschst, dann sollte das klarer sein, was Du machen möchtest.
  • WiglWagl schrieb:

    da man im XCode keine brauchbaren Fehlermeldungen bekommt, ist das unheimlich schwierig.
    ... Vielleicht bin ich da auch nur etwas anders als alle Anderen, aber ich bekomme brauchbare Fehlermeldungen.
    Du kannst dir ja sämtliche Schritte ausgeben, mit Breakpoints Schritt für Schritt durch deinen Code gehen und bist eigentlich selten von XCode alleine gelassen...

    Wenn man da mit zB. C arbeitet, is das etwas gaaanz anderes...
    ''Ich stelle immer Getränke auf meinen PC, da ist noch nie etwas passiert..''
    - 'Aber.. dieses mal ist es dir doch in den Lüfter gelaufen?!'
    ''Ja, aber sonst nicht''
    8| :thumbsup:
  • Ahaj spannend und wo sollen diese Fehlermeldungen sein? Ich arbeite mit Breakpoints und habe genau in der ersten Zeile oben
    einen und die Zeilen danach verursachen ein Fehler , offenabr, weil ein kompletter Codeblock übersprungen wird, aber warum und
    wieso ist nicht ersichtlich.
    Hier ist Visual Studio schon um welten einfacher und besser muss ich sagen.
  • Also die Fehlerbeschreibung „funktioniert das leide rnicht“ hilft uns jetzt nicht wirklich, dir bei deinem Problem zu helfen. Was funktioniert denn nicht bzw. was erwartest du und was passiert? Bringt Xcode eine Fehlermeldung oder wird in deinem guard-Statement der else-Teil aufgerufen und ein Fehler ausgegeben?

    Sollte dein Code ohne Fehler durchlaufen, dann steht eben der Rückgabewert der Webseite in der Konstante data und den kannst du dann nach guard auswerten.

    Wobei, wenn ich es mir genauer ansehe, dann fehlt da doch ein resume(). Dein Task wird so gar nicht aufgerufen. Auch ist ein errror Falsch geschrieben. Das müsste eher so aussehen:

    Quellcode

    1. if let urlS = URL(string: "https://bla.bla.at?kundeS=Test&userS=Test&passwS=Test") {
    2. let task = URLSession.shared.dataTask(with: urlS) { (data, response, error) in
    3. guard let data = data, error == nil else {
    4. debugPrint("Fehler beim Laden von \(urlS)", String(describing: error))
    5. return
    6. }
    7. debugPrint(String(data: data, encoding: .utf8) ?? "keine Daten")
    8. }
    9. task.resume()
    10. } else {
    11. print("URL fehlerhaft")
    12. }
    Alles anzeigen
    So Long, and Thanks for All the Fish.
  • Hier der komplette Code:

    Quellcode

    1. struct Class: Codable {
    2. let id: String
    3. let mail: String
    4. let host: String
    5. let mandant: String
    6. let prefix: String
    7. let rolle: String
    8. let pword: String
    9. }
    10. let urlS = URL(string: "https://gupha.justsell.at/AppConncetor.asmx/AppConnWorker?kundeS=_gu&userS=Rene&passwS=Rene")!
    11. URLSession.shared.dataTask(with: urlS, completionHandler: {(data, response, error) in
    12. guard let data = data, error == nil else { print(error!); return}
    13. let decoder = JSONDecoder()
    14. let classes = try! decoder.decode([Class].self, from: data)
    15. for myClass in classes {
    16. print(myClass.id)
    17. print(myClass.mail)
    18. print(myClass.host)
    19. }
    20. }).resume()
    Alles anzeigen

    Die Zeile 11/12 springt direkt zu Teile 20, ohne das ich einen FEhler sehen kann. Die URL funktioniert jetzt gerade nicht, da die Domain umzieht, ist aber richtig.
    Ich erwarte, dass es in Zeile 13 weitergeht. Da ich aber keine Fehlermeldung sehe, weiß ich nicht warum. Bedeutet für mich, irgendwas in Zeile 11 und 12 stimmt nicht.
    und hier stehe ich an.

    danke