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を設定しているにもかかわらず、私の「空のフィールド」エラーを返します。これは、POSTの呼び出しを行う機能であります
PS:私が郵便配達所から電話すると、そのルートはうまく動作しています。
あなたのコードブロックからは、JSONデータを送信しようとしています。 'NSJSONSerialization.dataWithJSONObject'を使用してJSONをデータに変換してください。 –
SwiftyJSONでは、' JSON 'は構造体です。 AnyObjectが必要なのでこのメソッドを使用することはできません。しかし、JSON.rawData()メソッドは適切なデータオブジェクトを返しています。結果をデコードしてテストしました。 –
'rawData'が返すものは不明ですが、' request.HTTPBody'プロパティは 'NSData'オブジェクトでなければなりません。 JSONの場合、データオブジェクトにはJSON(シリアル化されたJSON表現)のUnicode文字列(UTF-8が好ましい)が含まれている必要があります。それに応じて 'Content-Type'ヘッダも設定するべきです(' application/json')。 – CouchDeveloper