2016-11-18 17 views
9

में JSON POST अनुरोध भेजना मेरे ऐप में मैं जेसन डेटा के साथ http पोस्ट अनुरोध करने का प्रयास कर रहा हूं। निम्नलिखित json एपीआई केस्विफ्ट 3

{ 
"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.} 

प्रतिक्रिया डेटा खाली है हो रही है के लिए मेरे कोड है। मैं क्या गलत कर रहा हूं, या मैंने अपने कोड में कुछ याद किया है?

पहले::

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

तो लॉग जोड़ने अगर आपके डेटा JSON में बदल जाती है

+1

'प्रिंट (प्रतिक्रिया) 'और' प्रिंट (जेसन)' का नतीजा क्या है? – Moritz

+0

प्रिंट (प्रतिक्रिया) का परिणाम वैकल्पिक ( {URL: http://xxxxxxxxx.net/api/Login} {स्थिति कोड: 415, शीर्षलेख { "सामग्री-लंबाई" = 0; तिथि = "शुक्र, 18 नवंबर 2016 12:20:21 जीएमटी"; सर्वर = "माइक्रोसॉफ्ट-आईआईएस/8.0"; "सेट-कुकी" = "ARRAffinity = 173cb9da56ba660395def768bf42f0686b2eba6731b99a6d8f2d08471ce133ed; पथ = /; डोमेन = plubmeradmin.azurewebsites.net "; " एक्स-पावर्ड-बाय "=" एएसपी.नेट "; }}) लेकिन प्रिंट (जेसन) खाली है –

+0

आपके पास आपका उत्तर है: '' सामग्री-लंबाई" = 0'। सर्वर द्वारा दिया गया डेटा खाली है। साथ ही, [यह क्यू एंड ए] (http://stackoverflow.com/questions/22566433/http-415-unsupported-media-type-error-with-json) पर एक नज़र डालें। – Moritz

उत्तर

16

दो बातें की कोशिश करो। अपने डेटा को स्ट्रिंग में कनवर्ट करें और मान प्रिंट करें।

इसके अलावा httpBody से पहले

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

जोड़ें। कभी-कभी हमें अपने अनुरोध में सर्वर को बताना होगा कि हम JSON डेटा पोस्ट कर रहे हैं।

आशा है कि यह आपकी मदद करेगा !!

हैप्पी कोडिंग!

+0

के साथ प्रयास करें यह काम करता है, बहुत बहुत धन्यवाद –