2015-06-02 3 views
2

я понял это решение в нижнемIOS: HTTP Post, используя быстрый

Я пытаюсь сделать запрос HTTP POST, на мой сервер. Вот что я сделал

 var request : NSMutableURLRequest = NSMutableURLRequest(URL : NSURL(string : "myURL") 
     let session : NSURLSession = NSURLSession.sharedSession() 
     request.allHTTPHeaderFields = (headers as [NSObject : AnyObject]) 
     request.HTTPShouldHandleCookies = true 
     request.HTTPMethod = "POST" 
     var postData = "frontend=iOS" 
     request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
     request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
     request.addValue("application/json", forHTTPHeaderField: "Accept") 
     NSHTTPCookieStorage.sharedHTTPCookieStorage().cookieAcceptPolicy = NSHTTPCookieAcceptPolicy.Always 
     println(request.allHTTPHeaderFields) 
     println(request.HTTPBody) 
     let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
      let json:JSON = JSON(data: data) 
      println(json) 
      onCompletion(json, error) 
     }) 
     task.resume() 

это не установка HTTPRequest.POST

Я попытался напечатать запрос к серверу на стороне сервера. IT сказал сообщение было пусто

POST: [QueryDict: {}]

Что я здесь отсутствует? Любая помощь приветствуется

Решение:

я по ошибке установить контент-значение для приложения/JSON, когда на самом деле это не было тела JSON. Удаление это решило проблему

+0

Требуется ли NSMutableURLRequest или NSURLRequest? – Thijs

+0

Это NSMutableRequest – SphericalCow

+0

Можете ли вы изменить свой вопрос, чтобы включить init запроса и сеанса? – Thijs

ответ

0

использовать https://github.com/Alamofire/Alamofire

простой сети :)

Alamofire.request(.GET, "http://httpbin.org/get", parameters: ["foo": "bar"]) 
    .response { (request, response, data, error) in 
       println(request) 
       println(response) 
       println(error) 
       } 

вы можете использовать все ниже.

public enum Method: String { 
case OPTIONS = "OPTIONS" 
case GET = "GET" 
case HEAD = "HEAD" 
case POST = "POST" 
case PUT = "PUT" 
case PATCH = "PATCH" 
case DELETE = "DELETE" 
case TRACE = "TRACE" 
case CONNECT = "CONNECT" 
} 
0

Heres метод, который я использовал в моей библиотеке регистрации: https://github.com/goktugyil/QorumLogs

var url = NSURL(string: urlstring) 

    var request = NSMutableURLRequest(URL: url!) 
    request.HTTPMethod = "POST" 
    request.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type") 
    request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding) 
    var connection = NSURLConnection(request: request, delegate: nil, startImmediately: true) 

См How to escape the HTTP params in Swift на пути правильно закодировать пары ключ-значение в строке данных.

Смежные вопросы