如何在 Swift 中发出 NSURLSession POST 请求

2024-01-02

你好,我是 Swift 的初学者,我正在尝试让 NSURLSession“Post”请求发送一些参数,如下面的代码

根据我的下面的代码响应不是来自服务器,有人可以帮助我吗

背景类别:-

 import UIKit

protocol sampleProtocal{

    func getResponse(result:NSDictionary)
    func getErrorResponse(error:NSString)
}

class BackGroundClass: NSObject {

    var delegate:sampleProtocal?

    func callPostService(url:String,parameters:NSDictionary){


        print("url is===>\(url)")

        let request = NSMutableURLRequest(URL: NSURL(string:url)!)

        let session = NSURLSession.sharedSession()
        request.HTTPMethod = "POST"

        //Note : Add the corresponding "Content-Type" and "Accept" header. In this example I had used the application/json.
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("application/json", forHTTPHeaderField: "Accept")

        request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(parameters, options: [])

        let task = session.dataTaskWithRequest(request) { data, response, error in
            guard data != nil else {
                print("no data found: \(error)")
                return
            }

            do {
                if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary {
                    print("Response: \(json)")
                    self.mainResponse(json)
                } else {
                    let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)// No error thrown, but not NSDictionary
                    print("Error could not parse JSON: \(jsonStr)")
                    self.eroorResponse(jsonStr!)
                }
            } catch let parseError {
                print(parseError)// Log the error thrown by `JSONObjectWithData`
                let jsonStr = NSString(data: data!, encoding: NSUTF8StringEncoding)
                print("Error could not parse JSON: '\(jsonStr)'")
                self.eroorResponse(jsonStr!)
            }
        }

        task.resume()
    }

    func mainResponse(result:NSDictionary){
        delegate?.getResponse(result)
    }

    func eroorResponse(result:NSString){
        delegate?.getErrorResponse(result)
    }
}

视图控制器:-

import UIKit

class ViewController: UIViewController,sampleProtocal {

    override func viewDidLoad() {
        super.viewDidLoad()

        let delegate = BackGroundClass();
        delegate.self;

        let params = ["scancode":"KK03799-008", "UserName":"admin"] as Dictionary<String, String>

        let backGround=BackGroundClass();
        backGround.callPostService("url", parameters: params)
    }

    func getResponse(result: NSDictionary) {
        print("Final response is\(result)");
    }

    func getErrorResponse(error: NSString) {
        print("Final Eroor code is\(error)")
    }
}

Swift 4发布带有 json 有效负载的示例 -

func postAction(_ sender: Any) {
    let Url = String(format: "your url")
    guard let serviceUrl = URL(string: Url) else { return }
    let parameterDictionary = ["username" : "Test", "password" : "123456"]
    var request = URLRequest(url: serviceUrl)
    request.httpMethod = "POST"
    request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
    guard let httpBody = try? JSONSerialization.data(withJSONObject: parameterDictionary, options: []) else {
        return
    }
    request.httpBody = httpBody
    
    let session = URLSession.shared
    session.dataTask(with: request) { (data, response, error) in
        if let response = response {
            print(response)
        }
        if let data = data {
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                print(json)
            } catch {
                print(error)
            }
        }
    }.resume()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 中发出 NSURLSession POST 请求 的相关文章

随机推荐

  • 是否可以在 jtable 中调用自动行排序器

    无论如何 是否可以在使用创建的 jtable 中调用自动行排序器 setAutoCreateRowSorter true 我试图让它按默认列排序 而用户不必单击列标题 table getRowSorter toggleSortOrder m
  • 从 QML 访问 C++ QList

    如果我有 C 中的内容列表 如何将其公开给 QML 在 Qt5 QtQuick 2 中 貌似QML只能看懂QObject 派生类 这是一个问题 因为QObjects 不能放入QList或复制 我该怎么做呢 struct Thing int
  • 将datareader绑定到asp图表控件

    本质上 我有一个数据读取器 理论上它会调用存储过程 并绑定返回到图表的查询 这是我想要绑定到图表的数据 ForecastDesc Previous Current Budget Forecast 4 Forecast 7 Period1 9
  • Android:Fragment 和 ViewPager 始终从第一个位置开始

    我为我的 Android 应用程序使用主 细节设计 如果我单击 ItemListActivity 中列表视图中的某个项目 则该位置将分配给我的 ItemDetailActivity 这个实现了 ViewPager 和 FragmentSta
  • 在 Play 2 框架上配置 QueryDSL

    我尝试配置QueryDSL http www querydsl com 在 Play Framework 使用 Java 中 但没有成功 我在Google上搜索过类似的问题 发现如下 1 查询DSL和播放 https stackoverfl
  • 如何从 postgres 只获取没有区域的时间戳?

    我在 postgres 中创建了一个带有一些时间戳列的表 create table glacier restore progress 4 id SERIAL NOT NULL email VARCHAR 50 restore start t
  • 为什么Fragment的onCreate()有时会先于Activity的onCreate()调用?

    最近我遇到了一个难以重现的问题 当片段尝试使用 Activity 中的数据初始化 ArrayAdapter 时 就会发生 NPE Activity 的 onCreate 方法中初始化的默认列表 Override protected void
  • 如何在 tkinter 文本小部件中标记文本

    请帮我解决这个代码 from tkinter import root Tk def click t insert INSERT t mark names t mark set INSERT 1 1 t mark gravity INSERT
  • JAVA 中列表上的聚合函数

    我有一个 Java 对象列表 我需要应用聚合函数 例如在数据库上进行选择 来减少它 注意 数据是根据多个数据库和服务调用计算得出的 我期望有数千行 并且每次执行每行始终具有相同数量的 单元格 该数量在执行之间会发生变化 Samples 如果
  • 在 Heroku 上部署战争所需的步骤

    我有带有 Maven 的 spring 源工具 我有一个 Java 项目想要部署在 Heroku 上 有人可以告诉我在 Heroku 上部署的步骤吗 非常感谢 Create warMaven 中的文件 您可以通过参考来做到这一点here h
  • Akka 适合短暂网络覆盖的系统吗?

    Akka 是否适合在节点需要进出 WiFi 覆盖范围的系统中使用 必须考虑哪些方面 例如首选哪些传输协议 Akka is适用于具有瞬态网络覆盖的系统 正如 Viktor 在对该问题的评论中指出的那样 主管层次结构可用于处理未交付错误 有关更
  • H2DB 中如何像 MySql 中那样获取 sql 转储?

    我有 H2DB 数据库 它将数据存储在文件中 我有3个文件 test 18 log db test data db and test index db 我想要像我使用时一样获取 SQL 转储文件mysqldump 是否可以 是的 有多种解决
  • 喷气背包上的调整大小组合不起作用

    我正在使用 jetpack compose 1 0 0 beta09 在我的项目上实现一个屏幕 但我在屏幕上遇到了一个问题 即使键盘打开 页脚也需要始终可见 我知道我们有android 上的 adjustResize 在正常活动中解决了这个
  • C++ 中无符号整数提升

    int main unsigned i 5 int j 10 double d i j long l i j int k i j std cout lt lt d lt lt n 4 29497e 09 std cout lt lt l l
  • jquery - $.functionName 和 $.fn.FunctionName 之间的区别

    在 jQuery 中 我见过以下两种定义 jQuery 函数的方法 fn CustomAlert function alert boo CustomAlert function alert boo 我知道它们附加到 jQuery 对象 或
  • sql联合顺序

    我有一张桌子 上面有学生的姓名和身高 我想要一个查询 按字母顺序对身高高于 150 厘米的学生进行排序 对身高低于 150 厘米的学生按姓名降序排列 像这样的东西 select from students where height gt 1
  • Visual Studio:是否对整个解决方案进行增量搜索?

    我非常喜欢 Visual Studio 中内置的键盘快捷键 我最喜欢的之一是Ctrl i 这会触发增量搜索 当我填写搜索词时 它会跳过当前文档中的文本 输入所需的搜索词后 我使用F3跳过比赛 它工作正常 除了仅限于搜索当前文件 此外 触发增
  • 我是否应该将“贷款”、“采购”和“销售”表非规范化为一张表?

    根据我在下面提供的信息 您能否就将单独的表非规范化为一个包含不同类型合约的表是否是个好主意发表意见 优点 缺点是什么 有没有人尝试过这样做之前 银行系统使用 CIF 客户信息文件 主 客户可能拥有不同类型的账户 CD 抵押贷款等 并使用交易
  • 向 Swift 2 中的类添加“for...in”支持

    这个问题 https stackoverflow com questions 24099227 add for in support to iterate over swift custom classes早期版本的 Swift 已经得到了
  • 如何在 Swift 中发出 NSURLSession POST 请求

    你好 我是 Swift 的初学者 我正在尝试让 NSURLSession Post 请求发送一些参数 如下面的代码 根据我的下面的代码响应不是来自服务器 有人可以帮助我吗 背景类别 import UIKit protocol sampleP