2016-05-12 17 views
8

Tôi muốn sử dụng Alamofire để lấy mã thông báo mang từ API Web nhưng tôi mới sử dụng ios và alamofire. Làm thế nào tôi có thể thực hiện điều này với Alamofire?bài đăng/x-www-form-urlencoded Alamofire

func executeURLEncodedRequest(url: URL, model: [String : String]?, handler: RequestHandlerProtocol) { 
    addAuthorizationHeader() 
    Alamofire.request(.POST,createUrl(url), parameters: model, headers: headers,encoding:.Json) 
} 
+0

Câu trả lời bên dưới có giải quyết được vấn đề của bạn không? Bạn nên đánh dấu nó là được chấp nhận hoặc cung cấp thông tin bổ sung để giải quyết vấn đề của bạn. – Majster

Trả lời

12

Vâng, bạn không thực sự cần Alamofire để làm điều này (nó có thể chỉ cần thực hiện bằng cách sử dụng đơn giản NSURLRequest) nhưng ở đây đi:

let headers = [ 
    "Content-Type": "application/x-www-form-urlencoded" 
] 
let parameters = [ 
    "myParameter": "value" 
] 
let url = NSURL(string: "https://something.com")! 
Alamofire.request(.POST, url, parameters: parameters, headers: headers, encoding: .URLEncodedInURL).response { request, response, data, error in 
    print(request) 
    print(response) 
    print(data) 
    print(error) 
} 

Tôi nghĩ rằng các tiêu đề có thể được bỏ qua kể từ khi alamofire sẽ thêm tiêu đề Content-Type thích hợp. Cho tôi biết nếu nó hoạt động.

Bạn cũng có thể tìm thấy một tấn đặc điểm kỹ thuật with examples here.

+0

Để dữ liệu biểu mẫu nằm trong nội dung, bạn nên xóa thông số 'encoding' – Vince

+0

Nếu bạn hướng dẫn Alamofire đưa các tham số vào thành phần truy vấn của URL, bạn không nên đặt loại nội dung nào cả. Nếu không, nếu bạn hướng dẫn Alamofire đưa các tham số vào trong cơ thể, nó sẽ tự động thêm tiêu đề kiểu nội dung 'application/x-www-form-urlencoded' cho bạn - nhưng cũng thêm sai một tham số' charset' mà không được định nghĩa cho loại MIME này. – CouchDeveloper

+0

Phải sử dụng URLEncoding.default để mã hóa. – Babul

5

Dưới đây là ví dụ mã mà nên làm việc với Alamofire 4.x và 3.x Swift như của tháng 8 năm 2017:

let parameters = [ 
    "myParameter": "value" 
] 
Alamofire.request("https://something.com", method: .post, parameters: parameters, encoding: URLEncoding()).response { response in 
    print(response.request) 
    print(response.response) 
    print(response.data) 
    print(response.error) 
} 

Không cần thiết lập các tiêu đề content-type một cách rõ ràng, vì nó được thiết lập bởi Alamofire tự động.

Các vấn đề liên quan