2017-03-24 14 views
0

コードそれが正しい形式ではないため、データを読み取ることができませんでした - HTTPネットワーク

let session = URLSession.shared 

    // prepare json data 
    let json: [String: Any] = ["email": "[email protected]"] 

    let jsonData = try? JSONSerialization.data(withJSONObject: json) 

    let proceedURL = NSURL(string:"https://mysitename.herokuapp.com/api/users/isUser") 
    //let proceedURL = NSURL(string:"https://google.com") 
    let request = NSMutableURLRequest(url: proceedURL! as URL) 
    //HTTP Headers 
    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.addValue("application/www.inception.v1", forHTTPHeaderField: "Accept") 
    request.addValue("Authorization", forHTTPHeaderField: "Basic aW5jZXB0aW9uQGZ1cmRvOmljM=") 
    request.httpMethod = "POST" 
    //request.httpBody = jsonData 


    // insert json data to the request 
    request.httpBody = jsonData 

    //create dataTask using the session object to send data to the server 
    let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in 

     guard error == nil else { 
      return 
     } 

     guard let data = data else { 
      return 
     } 

     // Print out response string 
     let responseString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) 
     print("responseString = \(responseString!)") 

     do { 
      //create json object from data 
      if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: AnyObject] { 
       print(json) 
       // handle json... 
      } 

     } catch let error { 
      print("error : " + error.localizedDescription) 
     } 

    }) 

    task.resume() 

エラー:それは正しい形式ではないため データを読み取ることができませんでした。

私は(アンドロイドで私はバレーボールのライブラリを使用していますように)その上で私を助けるとメイクネットワーク接続のためのより良い提案を与える、iphoneアプリ開発の初心者です

実際の応答は次のとおりです。

{ 
    "status": 1, 
    "http_status_code": 200, 
    "data": { 
    "email": "[email protected]", 
    "phone": "8090909000" 
    } 
} 

私はAndroidで同じものを使っていて、郵便配達員でテストしています。上側のコード応答のための

// Print out response string 
     let responseString = NSString(data: data, encoding: String.Encoding.utf8.rawValue) 

Alamofireを使用して
+0

使用Alamofire - エラーのようスウィフト – Krunal

+0

、データがそう間違った形式で –

+0

あるので、彼は何をすべきでしょうか? @Lu_ – ntoonio

答えて

0

ではありません。 iOS用

let json: [String: Any] = ["email": "[email protected]"] 

Alamofire.request(.POST, "https://mysitename.herokuapp.com/api/users/isUser" , parameters: json, encoding: .JSON).responseJSON { 
      Response in 
      switch Response.result { 
      case .Success(let _data): 
       let JsonData = JSON(_data) 
       print("JsonData : \(JsonData)") 


      //handle json 


case .Failure(let _error): 
       print(_error) 
       let AlertBox = UIAlertController(title: "Connection Failed", message: "No Connection", preferredStyle: .Alert) 
       let ActionBox = UIAlertAction(title: "Ok" , style: .Default, handler: { _ in}) 
       AlertBox.addAction(ActionBox) 
       self.presentViewController(AlertBox, animated: true, completion: nil) 
      } 
+0

アラモファイアはサードパーティのライブラリですか? – rkkanojia7

+0

@Rohit Kumar Kanojiaそれは第三者です。 –

+0

@TusharSharmaありがとう、iosには公式の図書館があります(Androidで好奇心のためだけにGoogleによるボレーがあります) – rkkanojia7

0
let json: [String: Any] = ["email": "[email protected]"] 

let jsonData = try? JSONSerialization.data(withJSONObject: json) 

// create post request 
let url = URL(string: "http://httpbin.org/post")! 
var request = URLRequest(url: url) 
request.httpMethod = "POST" 
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 

// insert json data to the request 
request.httpBody = jsonData 

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
    guard let data = data, error == nil else { 
     print(error?.localizedDescription ?? "No data") 
     return 
    } 
    let responseJSON = try? JSONSerialization.jsonObject(with: data, options: []) 
    if let responseJSON = responseJSON as? [String: Any] { 
     print(responseJSON) 
    } 
} 

task.resume() 
関連する問題