当前位置: 首页 > 面试题库 >

使用Alamofire 4在体内发布数据的POST请求

卫骏
2023-03-14
问题内容

如何使用Alamofire 4在HTTP正文中发送带有数据的POST请求?我在Swift 2.3上使用了自定义编码,效果很好。我转换了代码swift
3,并尝试对参数进行编码,但无法正常工作。此代码:

public struct MyCustomEncoding : ParameterEncoding {
private let data: Data
init(data: Data) {
    self.data = data
}
public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {

    var urlRequest = try urlRequest.asURLRequest()        
    do {            
            urlRequest.httpBody = data
            urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")

    } catch {
        throw AFError.parameterEncodingFailed(reason: .jsonEncodingFailed(error: error))
    }

    return urlRequest
}

和Alamofire请求:

let enco : ParameterEncoding = MyCustomEncoding(data: ajsonData)
    Alamofire.request(urlString, method: .post , parameters: [:], encoding: enco , headers: headers).validate()
                .responseJSON { response in
                    switch response.result {
                    case .success:
                        print(response)

                        break
                    case .failure(let error):

                        print(error)
                    }
    }

问题答案:

您需要像下面一样迅速发送请求3

let urlString = "https://httpbin.org/get"

Alamofire.request(urlString, method: .post, parameters: ["foo": "bar"],encoding: JSONEncoding.default, headers: nil).responseJSON {  
response in
  switch response.result {
                case .success:
                    print(response)

                    break
                case .failure(let error):

                    print(error)
                }
}

带Alamofire 5的Swift 5:

AF.request(URL.init(string: url)!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
        print(response.result)

        switch response.result {

        case .success(_):
            if let json = response.value
            {
                successHandler((json as! [String:AnyObject]))
            }
            break
        case .failure(let error):
            failureHandler([error as Error])
            break
        }
    }


 类似资料:
  • 问题内容: 此模块是“请求https://github.com/mikeal/request 我想我正在遵循每个步骤,但我错过了一个论点。 另一方面,我有 而且我知道php没错… 问题答案: 编辑: 您应该签出Needle。它为您做到了这一点,并支持多部分数据,以及更多。 我发现我缺少标题

  • 我正在使用截击库。我有以下API urlhttp://example.com/project/contriller/并且需要将json请求作为body发布到它。 如何使用截击发送?

  • 我正在开发一个web应用程序,需要使用带有post方法的ajax发送一些数据。所以我有两种选择来发送数据,无论是JSON格式还是查询婴儿车。我不知道该用哪个?以JSON格式发送数据安全吗?

  • 所以我有一个php页面,我试图让我的GoLang客户端通过POST请求进行通信。php脚本通过key:value进行输入,key:value是message:hello world,希望添加多个键。它适用于我的python脚本,但不适用于golang,所以这里是我到目前为止在golang中的内容。 尝试运行上述代码时收到的错误消息: php脚本是: 我能得到的最佳回复如下:

  • 问题内容: 我想使用JavaScript中的XMLHttpRequest发送一些数据。 说我的HTML形式如下: 如何在JavaScript中使用XMLHttpRequest编写等效项? 问题答案: 下面的代码演示了如何执行此操作。

  • 我试图使用angular及其http库向我的SpringRESTAPI发送post请求。 目前在post-man(成功)我发送数据的方式: 格式为表单数据 钥匙是reqData(必填) 该值为json(必需) 如何通过角以相同的方式发送数据? 目前,我的数据是这样的: 添加有关我的后端代码的更多信息: 我的rest api看起来像这样: 因此,我应该发送一个键和值(我不知道typescript中是