Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Alamofire 4在正文中使用数据发布请求_Ios_Swift_Encoding_Swift3_Alamofire - Fatal编程技术网

Ios 使用Alamofire 4在正文中使用数据发布请求

Ios 使用Alamofire 4在正文中使用数据发布请求,ios,swift,encoding,swift3,alamofire,Ios,Swift,Encoding,Swift3,Alamofire,如何使用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:

如何使用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)
                    }
    }

您需要在swift 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
        }
    }

这将在Swift 4中工作得更好

let url = "yourlink.php". // This will be your link
let parameters: Parameters = ["User_type": type, "User_name": name, "User_email": email, "User_contact": contact, "User_password": password, "from_referral": referral]      //This will be your parameter

Alamofire.request(url, method: .post, parameters: parameters).responseJSON { response in
    print(response)
}

使用Alamofire的GET和POST方法的Alamofire

class ViewController: UIViewController {
    let parameters = [
        "username": "foo",
        "password": "123456"
    ]
    let url = "https://httpbin.org/post"

override func viewDidLoad() {
        super.viewDidLoad()
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:]).responseJSON {
            response in
            switch (response.result) {
            case .success:
                print(response)
                break
            case .failure:
                print(Error.self)
            }
        }
}
1.创建一个名为“GlobalMethod”的文件以供多次使用

import Alamofire
class GlobalMethod: NSObject {

    static let objGlobalMethod = GlobalMethod()

    func ServiceMethod(url:String, method:String, controller:UIViewController, parameters:Parameters, completion: @escaping (_ result: DataResponse<Any>) -> Void) {

            var headers = Alamofire.SessionManager.defaultHTTPHeaders
            headers["HeaderKey"] = "HeaderKey"
            if method == "POST" {
                methodType = .post
                param = parameters
            }
            else {
                methodType = .get
            }
            Alamofire.request(url, method: methodType, parameters: param, encoding: JSONEncoding.default, headers:headers
                ).responseJSON
                { response in

                    completion(response)
            }
        }
}

使用post方法的Alamofire 导入UIKit 进口阿拉莫菲尔

class ViewController: UIViewController {
    let parameters = [
        "username": "foo",
        "password": "123456"
    ]
    let url = "https://httpbin.org/post"

override func viewDidLoad() {
        super.viewDidLoad()
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: [:]).responseJSON {
            response in
            switch (response.result) {
            case .success:
                print(response)
                break
            case .failure:
                print(Error.self)
            }
        }
}

请在下面查找代码

**

吊舱“Alamofire”,“~>5.4”

** **

pod“ObjectMapper”,“~>4.2”

** **

吊舱“迅捷JSON”

**

吊舱“TPKeyboardAvoiding”

使用模型

import ObjectMapper
        
class LoginModel : Mappable{
        
        var status : String?
        var data : [DataModel]?
        var message : String?
    
        required init?(map: Map) {
        }
    
        func mapping(map: Map) {
            status <- map["status"]
            data <- map["data"]
            message <- map["message"]
        }
    }
    
    class DataModel : Mappable{
        var access_token : String?
        var isvideo : String?
        
        required init?(map: Map) {
            
        }
        
        func mapping(map: Map) {
            access_token <- map["access_token"]
            isvideo <- map["isvideo"]
        }
    }
导入对象映射器
类LoginModel:可映射{
变量状态:字符串?
var数据:[数据模型]?
var消息:字符串?
必需的初始化?(映射:映射){
}
func映射(映射:映射){

状态我无法在PHP中访问此post数组,PHP中的post数组为空。请告诉我如何在PHP中使用post参数
HTTPNetwork().getHTTPData("", parameters: LoginParameter, completion: {(successresponse) -> Void in
                
                if let res = successresponse{
                    print("sucess token \(res["message"].string!)")
                    if let myuser = Mapper<DataModel>().map(JSONString: res["data"].rawString()!){
                        print("access_token \(myuser.access_token)")
                    }
                }
            }, error: {(errorresponse)-> Void in
                if let res = errorresponse{
                    print("Error response token \(res)")
                }
            })


public func getHTTPData(_ request: String, parameters : Parameters?, completion: @escaping (  JSON?) -> Void, error: @escaping ( JSON?) -> Void){
    AF.request(URL.init(string: "url")!, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON { (response) in
        print(response.result)
        
        switch response.result{
        case .success:
            if let json = response.value as? [String : Any]{
                if let output:JSON = JSON(response.value!){
                    if json["isSuccess"] as? Int == 1{
                        completion(output)
                    }else{
                        error(output)
                    }
                }
            }else{
                completion(nil)
            }
        case .failure:
            completion(nil)
        }
    }
}