Ich versuche, eine PUSH HTTP-Anfrage zu machen und bekomme einen Fehler, der beschreibt, dass ich ein JSON-Array und kein JSONObject bereitstellen muss, wie erstelle ich ein Array von meinem einzigen Objekt, ist es möglich damit?JSONObject vs JSONArray Swift
func printdata(){
let myJsonDict: [String:AnyObject] = [
"action": "Websites",
"method":"school_webpage",
"tid":2,
"data":["schoolId":14273],
"type":"rpc"
]
do{
let jsonObject = try NSJSONSerialization.dataWithJSONObject(myJsonDict, options: NSJSONWritingOptions.PrettyPrinted)
HTTPPostJSON("http://wwww.oncoursesystems.com/json.axd/direct/router", data:jsonObject) { (response, error) -> Void in
print(response);
}
}
catch{
}
}
func HTTPsendRequest(request: NSMutableURLRequest, callback: (String, String?) -> Void) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) -> Void in
if (error != nil) {
callback("", error!.localizedDescription)
} else {
callback(NSString(data: data!, encoding: NSUTF8StringEncoding)! as String, nil)
}
}
task.resume()
}
func HTTPPostJSON(url: String, data: NSData, callback: (String, String?) -> Void) {
let request = NSMutableURLRequest(URL: NSURL(string: url)!)
request.HTTPMethod = "POST"
request.addValue("application/json",forHTTPHeaderField: "Content-Type")
request.addValue("application/json",forHTTPHeaderField: "Accept")
request.HTTPBody = data
HTTPsendRequest(request, callback: callback)
}
Mein Methodenaufruf
override func viewDidLoad() {
super.viewDidLoad()
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.sizeToFit()
definesPresentationContext = true
self.tableView.tableHeaderView = searchController.searchBar
names = HtmlController.loadData() as NSArray as! [String]
names.removeAtIndex(0)
clean()
refreshController = UIRefreshControl()
refreshController.addTarget(self, action: #selector(WebpageController.refresh(_:)), forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refreshController)
printdata()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
}
Ich bin daran interessiert, die Antwort zu diesem, becuase derzeit verwende ich eine Zeichenfolge für den Körper meiner POSTs. Es hat für mich funktioniert, also habe ich mir nicht die Mühe gemacht, etwas anderes zu machen, aber es würde mir nichts ausmachen, meinen zukünftigen Code sauberer zu machen. – Sethmr
'Ich muss ein JSON-Array und kein JSONObject bereitstellen} Hier gibt es einige Verwirrungen im Vokabular: Ein JSON-Objekt ist immer entweder ein Dictionary oder ein Array. :) – Moritz