2016-05-18 7 views
1

Я пытаюсь сделать HTTP-запрос на сервер разработки с самоподписанным сертификатом. Эта функция делает POST вызов:iOS9 + Swift: как установить тело после запроса с использованием значения JSON?

func makeHTTPPostRequest(path: String, body: JSON, onCompletion: (JSON?, NSError?) -> Void) { 

    let request = NSMutableURLRequest(URL: NSURL(string: path)!) 
    request.HTTPMethod = "POST" 

    // I am using SwiftyJSON 
    do { 
     request.HTTPBody = try body.rawData() 
    } catch _ { } 

    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
    let session = NSURLSession(configuration: configuration, delegate: self, delegateQueue:NSOperationQueue.mainQueue()) 

    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in 
     var json: JSON? 
     if let _data = data { 
      json = JSON(data: _data) 
     } 
     onCompletion(json, error) 
    }) 
    task.resume() 
} 

Когда я делаю запрос POST, сервер возвращает меня «Пустые поля» ошибка, даже если я правильно установить HTTPBody запроса:

enter image description here

PS: Маршрут работает нормально, когда я вызываю его из Postman.

+1

Из блока кода you'r я могу предположить, что вы пытаетесь отправить данные JSON. Вы должны попытаться преобразовать JSON в данные с помощью 'NSJSONSerialization.dataWithJSONObject' –

+0

В SwiftyJSON 'JSON' является структурой. Я не могу использовать этот метод, потому что он ожидает AnyObject. Однако метод JSON.rawData() возвращает правильный объект данных. Я протестировал его, расшифровав результат. –

+1

Не уверен, что возвращает 'rawData', но свойство' request.HTTPBody' должно быть объектом 'NSData'. В случае JSON объект данных должен содержать последовательность символов Unicode (предпочтительный UTF-8), который является вашим JSON - это ваше сериализованное представление JSON. Вы также должны соответствующим образом настроить заголовок 'Content-Type' (' application/json'). – CouchDeveloper

ответ

1

Объект request.HTTPBody должен быть NSData. Если вы хотите отправить JSON, объект данных должен содержать последовательность символов Unicode (предпочтительный UTF-8), который является вашим сериализованным представлением JSON.

Кроме того, вы должны также установить заголовок Content-Type соответственно application/json.

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

  • Нет связанных вопросов^_^