web-dev-qa-db-ja.com

JSONの送信POST Swift3でのリクエスト

私のアプリでは、jsonデータを使用してhttp投稿リクエストを作成しようとしています。次のJSONをAPIに転送する必要があります

{ 
 "Password":"123456",   
 "Email":"[email protected]"
}

このタスクのための私のコードはここにあります

let dict = ["Email": "[email protected]", "Password":"123456"] as [String: Any]
if let jsonData = try? JSONSerialization.data(withJSONObject: dict, options: []) {


    let url = NSURL(string: "http://xxxxxxxxx.net/api/Login")!
    let request = NSMutableURLRequest(url: url as URL)
    request.httpMethod = "POST"

    request.httpBody = jsonData

    let task = URLSession.shared.dataTask(with: request as URLRequest){ data,response,error in
        if error != nil{
           print(error?.localizedDescription)
           return
        }

        do {
            let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary

            if let parseJSON = json {
                   let resultValue:String = parseJSON["success"] as! String;
                   print("result: \(resultValue)")
                   print(parseJSON)
                   }
            } catch let error as NSError {
                 print(error)
            }        
       }          
     task.resume()
    }

次のエラーが表示されます

Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}

応答データは空です。私が間違っていること、またはコードで何かを見逃していますか?

11
Vah.Sah

2つのことを試してください。

最初 :

jsonData = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)

データがJSONに変換される場合はログを追加します。データを文字列に変換し、値を出力します。

また追加

request.addValue("application/json", forHTTPHeaderField: "Content-Type")

httpBodyの前。 JSONデータを投稿していることをリクエストでサーバーに通知する必要がある場合があります。

これがあなたを助けることを願っています!!

ハッピーコーディング!

19
iProgrammer