Swift HTTP GET请求例子
来源:互联网 发布:淘宝上开网店要钱吗 编辑:程序博客网 时间:2024/06/14 19:49
原文 http://swiftdeveloperblog.com/http-get-request-example-in-swift/
这个短博客我分享个例子:如何使用一个参数,创建和发送HTTP GET请求。我也会展示如何添加Basic Authorization header 或者 custom Token Auth header 的值到 HTTP请求。
在这个特别的例子,我建立了个Single View Application且只有一个ViewController,界面很基本,一个UITextField将会接收userName的值,一个按钮用户点击它可以发送HTTP 请求。
当点击Send 按钮的时候,会调用以下函数
@IBAction func sendButtonTapped(sender: AnyObject) { }
上面的的函数还没准备用于我们的项目中,我们还需要添加一些业务逻辑进去。第一步要做的事从UITextFiled 中取值并检查值是否为空。为了实现这个我们首先要为UITextField创建一个outlet。关于IBOutlet如下
class ViewController: UIViewController {@IBOutlet weak var userNameTextField: UITextField!...
现在我们修改一下函数“sendButtonTapped”,把它改成如下这样:
@IBAction func sendButtonTapped(sender: AnyObject) {// Read textValue user inputs into userNameValue variablelet userNameValue = userNameTextField.text// Check of userNameValue is not emptyif isStringEmpty(userNameValue!) == true{ return}// If we reach here then we can send http request}
isStringEmpty 是一个我们需要去实现的自定义函数,我们来创建一个新的函数,这个新函数将会检查string的值是否为空,如果为空,返回true。
func isStringEmpty(var stringValue:String) -> Bool { var returnValue = false if stringValue.isEmpty == true { returnValue = true return returnValue } // Make sure user did not submit number of empty spaces stringValue = stringValue.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet()) if(stringValue.isEmpty == true) { returnValue = true return returnValue } return returnValue }
现在继续我们的函数sendButtonTapped,为它添加发送HTTP GET请求的代码。下面我提供完整的函数实现,并且在代码的注释中解释它的业务逻辑
@IBAction func sendButtonTapped(sender: AnyObject) { let userNameValue = userNameTextField.text if isStringEmpty(userNameValue!) == true { return } // Send HTTP GET Request // Define server side script URL let scriptUrl = "http://swiftdeveloperblog.com/my-http-get-example-script/" // Add one parameter let urlWithParams = scriptUrl + "?userName=\(userNameValue!)" // Create NSURL Ibject let myUrl = NSURL(string: urlWithParams); // Creaste URL Request let request = NSMutableURLRequest(URL:myUrl!); // Set request HTTP method to GET. It could be POST as well request.HTTPMethod = "GET" // If needed you could add Authorization header value // Add Basic Authorization /* let username = "myUserName" let password = "myPassword" let loginString = NSString(format: "%@:%@", username, password) let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)! let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions()) request.setValue(base64LoginString, forHTTPHeaderField: "Authorization") */ // Or it could be a single Authorization Token value //request.addValue("Token token=884288bae150b9f2f68d8dc3a932071d", forHTTPHeaderField: "Authorization") // Excute HTTP Request let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in // Check for error if error != nil { print("error=\(error)") return } // Print out response string let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) print("responseString = \(responseString)") // Convert server json response to NSDictionary do { if let convertedJsonIntoDict = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { // Print out dictionary print(convertedJsonIntoDict) // Get value by key let firstNameValue = convertedJsonIntoDict["userName"] as? String print(firstNameValue!) } } catch let error as NSError { print(error.localizedDescription) } } task.resume() }
这个很简单,使用这个例子你可以对你的web 服务端发送HTTP GET 请求。如果你想了解这个例子具体怎么运行或者你要调试它,到这里下载https://github.com/simplyi/http-get-example
添加 Basic Authorization HTTP 请求头
请注意上面的函数,有一些代码注释掉了,注释掉的代码是关于添加带有Authorization值的HTTP Request Header (HTTP请求头) 。我用的服务端不要求使用Auth token 或 Basic Authorization。但是如果你的web 服务端要求使用 Basic Authorization,你可以添加下面代码:
let username = "myUserName" let password = "myPassword" let loginString = NSString(format: "%@:%@", username, password) let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)! let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions()) request.setValue(base64LoginString, forHTTPHeaderField: "Authorization")
添加Auth Token 到 HTTP 请求头
如果你的RESTful web服务端 要求提供带有Auth Token 的HTTP请求头,你可以取消下面这段代码的注释,然后添加带有Auth Token值的Authorization header:
request.addValue("Token token=884288bae150b9f2f68d8dc3a932071d", forHTTPHeaderField: "Authorization")
对你有帮助。
- Swift HTTP GET请求例子
- 异步的HTTP POST与GET请求例子
- 异步的HTTP POST与GET请求例子
- Swift中的HTTP请求
- Swift HTTP请求集合
- Swift中的HTTP请求
- http post get 请求
- Unity3d Http Get请求
- HTTP GET/POST 请求
- http post get请求
- HTTP Get请求
- http请求 get post
- http get请求
- http post get请求
- http get请求
- http get 请求
- HTTP请求GET,POST
- Http请求 post get
- Oracle rownum和rowid
- .addClass(),.removeClass(),.toggleClass()的区别
- c#的DateTime.Now函数详解
- ReactNative js判断android还是ios
- UniversalImageLoader源码解读07-内存泄漏和bug
- Swift HTTP GET请求例子
- tomcat发布项目如何去掉项目名称
- 表空间2
- ios开发-无界面设计文件开发
- java中的Serializable接口的作用
- 表空间
- 面试笔试题5--大整数表示问题?
- BZOJ3523: [Poi2014]Bricks
- PHP5+nginx+yii2.0高级+composer+mongodb