ææ£å¨å ³æ³¨å¨ Swift ä¸ç HTTP è·å请æ±ä¸åå¸ç Here æç¨ã
ææ£å¨å°è¯åæèªå·±ç URL åé get 请æ±ï¼å°æ°æ®ä½ä¸º JSON å¯¹è±¡æ¥æ¶ï¼å°å ¶è½¬æ¢ä¸º NSDictionary 对象ï¼ç¶åè§£ææ°æ®ï¼å°±åæç¨ä¸æ ·ã
ç±äºæç§åå ï¼å½æè¿è¡âNSJSONSerializationâè°ç¨æ¶ï¼ææ¶å°äºæåºçé误ï¼
âæ æ³è¯»åæ°æ®ï¼å 为å®çæ ¼å¼ä¸æ£ç¡®ãâ
è¿æ¯æä½¿ç¨ç代ç ï¼
import UIKit
import Foundation
func getObject()
let categoryId: Int = 419247
let URL = "http://www.URL.com/category/display?category_id=\(categoryId)&_format=json"
let myURL = NSURL(string: URL)
let request = NSMutableURLRequest(URL:myURL!)
request.HTTPMethod = "GET"
NSURLSession.sharedSession().dataTaskWithRequest(request)
data, response, error in
if error != nil
print("error=\(error)")
return
do
if let convertedJsonIntoDict = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary
//Parse the data
catch let error as NSError
print("Error received")
print(error.localizedDescription)
.resume()
ç¶åæç»§ç»å¨ç±»ä¸è°ç¨æ¤å½æ°âè¦ç func viewDidLoad() æ¶æ¯ï¼å¦ä¸æç¤ºï¼
override func viewDidLoad()
super.viewDidLoad()
score = 0
scoreLabel.text = String(score)
getObject()
å½æå¨ catch åä¸è¾å ¥è¿ä¸¤è¡æ¶ï¼
print(error.localizedDescription)
print(String(data: data!, encoding: NSUTF8StringEncoding))
æå¾å°è¿ä¸ªç»æï¼
The data couldnât be read because it isnât in the correct format.
Optional("<!DOCTYPE html>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:fb=\"http://ogp.me/ns/fb#\" xmlns:og=\"http://opengraphprotocol.org/schema/\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\" />\n <title>**MYTITLE**</title>\n <meta name=\"description\" content=\**MYCONTENT**/>\n <meta name=\"keywords\" content=\"**CONTENT**" />\n <meta name=\"msvalidate.01\" content=\"41B97029358C73B43E83E46F81B33636\" />\n <link rel=\"shortcut icon\" type=\"image/x-icon\" href=\"http://common.csnimages.com/common/misc/favicon.ico\" />\n <link rel=\"canonical\" href=\"http://www.URL.com\"/>\n <style>\n html, body, div, span, h1, h2\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline; \n body\n font-family:Arial,Helvetica,sans-serif;\n font-size:13px;\n color:#4D4D4F;\n cursor:default;\n \n h1\n font-size:30px;\n font-weight:bold;\n color:#783163;\n \n h2\n font-size:16px;\n font-weight:bold;\n \n .wrapper\n margin:35px auto;\n width:767px;\n \n .redirect\n background:url(data:image/jpeg;base64,/9j/*ENGLISH TEXT 100,000 CHARACTERS LONG* (REMOVED 95% OF CHARACTERS FOR LENGTH REASONS) AAP/sABFEdWNreQABAAQAAABBAAD/4QNxaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIwMTAvMDIvMTItMTc6MzI6MDAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhID);\n\n var i = new Image(1, 1);\n i.src = prefix + q;\n i.onload = function() ;\n \n catch(e);\n\n </script>\n\n </body>\n</html>\n")
æä¼¼ä¹æ ¹æ¬æ æ³å¼æ¸ æ¥è¿ä¸ç¹ãæå°è¯äºå¾å¤ä¸åçäºæ ï¼ä½é½æ²¡ææåãä»»ä½å¸®å©å°ä¸èææ¿ï¼
ãé®é¢è®¨è®ºãï¼
æ¤å¤ï¼å¨ææ§è¡âif let convertdedJsonIntoDictâè°ç¨ä¹åï¼å¦ææç¼åâprint(data!)âï¼å®åªä¼æå°åºä¸é¿ä¸²åå è¿å¶å¼ @Rob æè°¢æ¨ç帮å©ãææå°äºæ°æ®ï¼å®ä¼¼ä¹æ¯æ£ç¡®çãå¨å°æ°æ®ä¼ éç»å½æ°ä¹åï¼ææ¯å¦éè¦å¯¹å ¶è¿è¡ç¼ç ï¼å½ææå°ï¼ååºï¼æ¶ï¼statusCode æ¯ 416 @Rob ä½ è®©æåçç¬¬ä¸æ¡æå°è¯å¥ä¸ç JSON ææ¬ï¼å 为é£å®é ä¸å¹¶æ²¡ææå°æç JSON æ°æ®ï¼å®ä¼¼ä¹æ£å¨æå°è¿æ ·çå å®¹ï¼ Optional("\nw3.org/1999/xhtml\" xmlns:fb=\"ogp.me/ns/fb#\" xmlns:og=\"opengraphprotocol.org/schema\">\n \n \n它的格式不正确,因为它应该是一个数组等。在下面的代码中,如果它给出错误,则更改 JSON 响应类型,如果它不应该显示 JSON 数据。如果 [String:Any] 不起作用,请尝试使用 Array。 一种方法是执行以下代码:
let url = URL(string: "https://google.com")
let task = URLSession.shared.dataTask(with: ((url ?? URL(string: "https://google.com"))!)) [self] (data, response, error) in
do
let jsonResponse = try JSONSerialization.jsonObject(with: data!, options: [])
print(jsonResponse)
guard let newValue = jsonResponse as? [String:Any] else
print("invalid format")
catch let error
print("Error: \(error)")
task.resume()
【讨论】: