• Get、Post HttpRequest For Swift language (iOS )

    1.Xcode7后注意HTTP请求的处理: Add  "NSAppTransportSecurity (NSAllowsArbitraryLoads Boolean YES)" in info.plist


    2.Get:

      let url_origin = "http://..."

            let url_percent = url_origin.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

            let url:NSURL = NSURL(url_percent!)!

            let requets:NSURLRequest = NSURLRequest(URL: url)

            let configuration:NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()

            let session:NSURLSession = NSURLSession(configuration: configuration)

            let task:NSURLSessionDataTask = session.dataTaskWithRequest(requets, completionHandler: {

                        (data:NSData?,response:NSURLResponse?,error:NSError?)->Void in

                        if error == nil{

                            do{

                                let responseData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary

                                print(responseData)

       //如果responseData是Json格式,可以通过 responseData["key的名字"] 来获取相应的value值 if the form of the responseData is "Json" , we can get the value through responseData["the name of key"]

                            }catch{       

                            }

                        }

                    })

                    task.resume() // start task


    3.Post:

     let request = NSMutableURLRequest(URL: NSURL(string: "http://...?")!)

    request.HTTPMethod = "POST"

        let postStr = "key=value&key2=value2&...&keyN=valueN"

                    request.HTTPBody = postStr.dataUsingEncoding(NSUTF8StringEncoding)

                    let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {

                        (data:NSData?,response:NSURLResponse?,error:NSError?)->Void in

                        if error == nil{

                            do{

                                let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)

                                print("Post result \(responseString)")   

    //根据返回结果进行解析做进一步处理  further processing                

                            }catch{

                                print("error")

                            }

                        }

                    })

                    task.resume()


    展开全文
  • 最近开始做新项目, 决定使用Swift 来做, 几个月前看了一下还是Swift2 现在已经到Swift3 了, 听说改动非常大。 那么直接从3学起吧,希望别出个4又改动非常大!   新做的项目会开始涉及到非常多的方面, 以前我是...

      最近开始做新项目, 决定使用Swift 来做, 几个月前看了一下还是Swift2  现在已经到Swift3 了, 听说改动非常大。 那么直接从3学起吧,希望别出个4又改动非常大! 

      新做的项目会开始涉及到非常多的方面, 以前我是用object-c的, 所以上手Swift可能会有些不适应。

      废话少说, 直接上代码:


    import UIKit
    
    
    /// 网络访问基类
    class BaseNetwrok: NSObject {
    
        
        /// Post 访问
        ///
        /// - Parameters:
        ///   - url: 服务器链接
        ///   - params: POST参数
        func post(url:String, params:NSMutableDictionary) {
            
            //创建会话对象
            let session     = URLSession.shared
            let serUrl      = URL(string:url)
            var request     = URLRequest(url: serUrl!)
            
            //设置访问方式为POST
            request.httpMethod = "POST"
            
            //设置POST 内容
            request.httpBody = getBody(params: params).data(using: String.Encoding.utf8)
            
            //开始访问
            let dataTask : URLSessionDataTask = session.dataTask(with: request) { (data, respones, error)  -> Void  in
                
                //访问结束
                if(error != nil) {
                    //返回出错
                    print(error.debugDescription)
                } else {
                    
                    //返回成功
                    let str = String(data: data!, encoding: String.Encoding.utf8)
                    
                    print(str ?? "error")
                }
                
            }
            dataTask.resume()
        }
        
        
        /// 获取post内容
        ///
        /// - Parameter params: 参数
        /// - Returns: Body
        func getBody(params:NSMutableDictionary) -> String {
            
            var body : String = "";
            
            for (key, value) in params {
                
                let str = "\(key)=\(value)&"
                
                body = body + str
            }
            
            if(body.characters.count > 1) {
                body = (body as NSString).substring(to: body.characters.count-1)
            }
            
            return body
        }
    }
    

    以上是一个非常普通, 非常简单的网络访问。 

    调用代码:

     let md = NSMutableDictionary()

     let a = BaseNetwrok()

      a.post(url: "http://www.baidu.com", params: md)


    待后续会上传更复杂的访问方式。


    展开全文
  • iOS基础网络教程-Swift版本: 2.使用UIWebView请求数据

    在前面, 我们已经了解过了 UIWebView, 以及网络的一些概念, 现在让我们来做一个简单的浏览器, 网络请求的一些细节~

    在这里, 我们会使用 UIWebView 与网络最简单的交互, 那就是使用 URL 加载网络的数据.


    1.搭建界面

    1


    2.实现网络交互

    关联控件, 以及获取属性

    class ViewController: UIViewController, UISearchBarDelegate, UIWebViewDelegate {
    // 搜索栏
        @IBOutlet weak var searchBar: UISearchBar!
    // WebView
        @IBOutlet weak var webView: UIWebView!
    // 后退Button
        @IBOutlet weak var goBack: UIBarButtonItem!
    // 前进Button
        @IBOutlet weak var goForward: UIBarButtonItem!
    }

    监听点击事件

        @IBAction func goToBack(sender: UIBarButtonItem) {
            webView.goBack()
        }
    
        @IBAction func goToForward(sender: UIBarButtonItem) {
            webView.goForward()
        }

    加载网络数据

        override func viewDidLoad() {
            super.viewDidLoad()
    
            // 1.设置访问资源 - 百度搜索
            let url = NSURL(string: "http://www.baidu.com")!
    
            // 2.建立网络请求
            let request = NSURLRequest(URL: url)
    
            // 3.加载网络请求
            webView.loadRequest(request)
    
            // 4.设置 UISearchBar 的代理对象
            searchBar.delegate = self
            webView.delegate = self
        }

    UISearchBar 的代理方法

        // 使用 UISearchBar 的代理方法
        func searchBarSearchButtonClicked(searchBar: UISearchBar) {
            // 1.获取当前 UISearchBar 的 Text
            var str = searchBar.text
    
            // 2.判断 UISearchBar 是否有前缀, 如果有, 就使用自定义的网址, 如果没有就默认使用百度搜索
            if !str.hasPrefix("http://") {
                str = "http://www.baidu.com/s?word=" + str
            }
    
            // 3.将输入的文字或者是需要搜索的东西转成 UTF8 格式, 并且解包
            let url = NSURL(string: str.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
    
            // 4.建立网络请求
            let request = NSURLRequest(URL: url!)
    
            // 5.加载网络请求
            webView.loadRequest(request)
    
            // 6.关闭 UISearchBar 的弹出键盘
            self.view.endEditing(true)
        }
    

    优化体验

        // UIWebView 代理方法, 自动检测是否有加载过数据, 如果有的话就会根据系统的判断来显示前进或者后退的按钮
        func webViewDidFinishLoad(webView: UIWebView) {
            self.goBack.enabled = webView.canGoBack
            self.goForward.enabled = webView.canGoForward
        }

    3.最终效果

    1
    1
    2
    2
    3
    3


    好了,这次我们就讲到这里, 下次我们继续

    展开全文
  • swift2.0 异步post请求

    2016-04-17 15:43:23
    swift语言实现异步网络post请求,用NSDictionary封装post表单。 class func post(urlString urlString: String?,postParams: NSDictionary!,completion: (data: NSString?) -> Void){ if urlString == nil { dis

    swift语言实现异步网络post请求,用NSDictionary封装post表单。

    class func post(urlString urlString: String?,postParams: NSDictionary!,completion: (data: NSString?) -> Void){
            if urlString == nil {
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    print("urlString 为空")
                    completion(data: nil)
                })
            }
            
            let url = NSURL(string: urlString!)//post的url地址
            let request = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 10)
            request.HTTPMethod = "POST"
            parseParams(Params: postParams, completion: {(result) in
                let postData: NSData = (result?.dataUsingEncoding(NSUTF8StringEncoding))!
                request.HTTPBody = postData//post表单
            })
            let queue = NSOperationQueue()
            NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler: {
                (response,data,error) -> Void in
                let httpResponse = response as? NSHTTPURLResponse
                if httpResponse?.statusCode == 200{
                    let parseData = NSString(data: data!, encoding: NSUTF8StringEncoding)//self.parseJSONData(data)
                    dispatch_async(dispatch_get_main_queue(),{
                        () -> Void in
                        completion(data: parseData)
                    })
                }else {
                    dispatch_async(dispatch_get_main_queue(), {
                        () -> Void in
                        print(error)
                        completion(data: nil)
                    })
                }
            })
        }
    当然在post之前还要将传过来的NSDictionary转化为post的固定格式

    class func parseParams(Params Params: NSDictionary!,completion: (paramString: NSString?) -> Void){
            var keyValueFormat: String?
            let result = NSMutableString()
            let keyEnum = Params.keyEnumerator()
            while let key = keyEnum.nextObject() as? String{
                keyValueFormat = String.init(format: "%@=%@&", arguments: [key,(Params.valueForKey(key)?.description)!])//post的键值对
                result.appendString(keyValueFormat!)
            }
            completion(paramString: result)
        }


    展开全文
  • ios swift UIwebView

    2015-11-03 11:35:56
    //自适应屏幕大小  let webView = UIWebView(frame:self.view.bounds)  let urlStr = "http://baidu.com"  let url = NSURL(string: urlStr)  let request = NSURLRequest(URL: url!)
            //自适应屏幕大小   
            let webView = UIWebView(frame:self.view.bounds)
            let urlStr = "http://baidu.com"
            let url = NSURL(string: urlStr)
            let request = NSURLRequest(URL: url!)
            webView.loadRequest(request)
    展开全文
  • <div class="post-text" itemprop="text"> <p>I´m trying to send data to a PHP file on my server using <code>URLSession</code>. This seems to fail though, since no data is received on the server. ...
  • 在Object-C中AFNetworking几乎是我们不可或缺的第三方库,使用起来非常方便,在Swift中,Alamofire是对应AFNetworking的第三方库,使用方法完全一样,下面看看常用的GET和POST怎么来写的: func loadData() { ...
  • NSURL *url = URL(_initializeURL);加载url    NSString *body = [NSString stringWithFormat: @"userId=%@",[UIUtil userID]];要post传递参数  NSMutableURLRequest *request = [[NSMutable
  • 只要属于移动开发的范畴,网络请求一定是其中的重头戏,Object-C的网络请求大家都不陌生,不过感觉很熟悉的貌似也不多,因为第三方的库用起来更加方便,比如我们所熟知的AFNetworking,在Swift中,也存在一些封装的...
  • var url:String="http://******"  var roomDic=DictionaryString,String>()  roomDic["roomId"]=“fff”  roomDic["roomPassword"]="123456" ...post(url,roomDic) ...func post(url:String,para
  • swift3.0 post &Json解析

    2017-03-14 14:30:20
    func post(){    //对请求路径的说明    //"http:"    //协议头+主机地址+接口名称    //协议头(http://)+接口名称(login)     //POST
  • swift5向服务器发送请求 Xcode版本:11.1 配置HTTPS Xcode只能用https不能http 先给Spring Boot工程配置https https://www.cnblogs.com/sufferingStriver/p/9026902.html 生成证书丢到resources文件夹中 ...
  • 基于AFNetworking3.0 封装的GET和POST请求 上传 下载
  • 使用Alamofire框架post json数据 func getappToken() ->String { var path ="http://xxx.com/v1/app/token/request_token" let params:NSMutableDictionary =NSMutableDictionary() pa...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 使用Swift进行iOS开发时,不可避免的要进行远程的数据获取和提交。 其数据请求的方式既可能是POST也可能是GET。同不管是POST还是GET又可以分为同步请求和异步请求。 下面通过四个例子来进行演示。 1,使用...
  • 这篇博客主要实现Swift客户端和NodeJS后台的Post、Get请求实现。 我是一个略有点讨厌重复使用工具的人,比如这些基本功能完全可以用OC和PHP等替代,但是没办法,现在知识更新的太快啦,Swift和NodeJS这么热,不去看...
  • <div class="post-text" itemprop="text"> <p>I'm trying to write to a database and not able to get POST data from Swift into ...
  • staticfuncinfoModifyUploadHeadImg(realName:String,major:String,image:UIImage){ varparams:Dictionary<String,String>=Dictionary(...
  • 说明:本文示例代码发送的请求均为http请求,需要对info.plist文件进行配置。... 一、简单说明 ... 在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网
1 2 3 4 5 ... 20
收藏数 8,382
精华内容 3,352
关键字:

post swift