ich stehe vor einem Problem dass ich definitiv nicht verstehe.
Ich habe einen asmx Webservice auf einem IIS am laufen der mit einer Software auf dem Mac spricht und Datenbankeinträge zur Verfügung stellt bzw. auch wegschreibt.
Damit ich den IIS, für nichts anderes läuft der im Moment, abschalten kann wollte ich einen ASP.NET Core Service auf dem Raspberry Pi laufen lassen der mir den kleinen "Dienst" eben übernimmt. Jetzt wird es etwas seltsam weil ich das verhalten der beiden ASP.Net Varianten nicht ganz verstehe - mag auch sein, dass es dabei eher ein Problem des IIS ist.
Der IIS bzw. der ASMX Webservice liefert mir ein XML-Array mit den Einträgen zurück (im Browser) -> der Webservice liefert eine List<ObjectAusModel>.
In der Swift-App bekomme ich ein JSON Dictionary zurück - ich habe als Responsetype "Application/json" angegeben.
"{\"d\":[{\"__type\":\"CTIWebService.tblCallings\",\"ID\":36,\"RemoteNumber\":\"xxxxxxxxx\",\"RemoteName\":\"xxxxxxx\",\"CallingDate\":\"\\/Date(1556375134540)\\/\",\"Action\":\"Wird angerufen...\"},{\"__type\":\"CTIWebService.tblCallings\",\"ID\":35,\"RemoteNumber\":\"xxxxxxxx\",\"RemoteName\":\"xxxxxxx\",\"CallingDate\":\"\\/Date(1556373822273)\\/\",\"Action\":\"Wird angerufen...\"}\\"
Der ASP.NET Core "Service liefert folgendes:
[{"id":0,"remoteNumber":"xxxxxx","remoteName":"Name unbekannt ","callingDate":"Protokoll","action":"Apr 19 2019 03:42:00:000PM"},{"id":0,"remoteNumber":"xxxxxxx","remoteName":"Name unbekannt ","callingDate":"Protokoll","action":"Apr 19 2019 07:54:00:000PM"}
Hier mal die Codeschnippsel vom ASP.NET
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public List<tblCallings> GetCallings() { var retCallings = new DBQueries().Callings(); this.Context.Response.ContentType = "application/json"; //this.Context.Response.Write(); return retCallings; }
und der vom ASP.NET Core
[HttpGet] public List<CTIModel.tblCallings> Get() { this.HttpContext.Response.ContentType = "application/json"; return database.GetCallings(); }
Jetzt stellt sich mir die Frage - was kann ich machen damit die Ausgaben identisch sind?
Swift stellt sich quer beim konvertieren der ASP.NET Core Daten in ein NSDictionary weil es ein NSArray erhält.
Ich wollte jetzt ungern die gesamte App umschreiben bzw. die Methoden ändern.
Jemand eine Idee?
Achso hier noch der Swift-Schnipsel der das Konvertieren macht:
func convertStringToDictionary(text: String) -> NSDictionary? { if let data = text.data(using: String.Encoding.utf8) { do { let result = try! JSONSerialization.jsonObject(with: data, options: [.allowFragments]) as! NSDictionary return result } catch let error as NSError { print(error) return nil } } return nil }