2014-07-04 6 views
9

मैं स्विफ्ट की ऐप्पल भाषा सीख रहा हूं (कोशिश कर रहा हूं)। मैं खेल का मैदान पर हूं और एक्सकोड 6 बीटा का उपयोग कर रहा हूं। मैं स्थानीय नोडजेएस सर्वर पर एक साधारण JSON पोस्ट करने की कोशिश कर रहा हूं। मैं पहले से ही इसके बारे में गुमराह कर चुका हूं और प्रमुख ट्यूटोरियल बताते हैं कि प्लेग्राउंड पर नहीं, प्रोजेक्ट में इसे कैसे करना है, बेवकूफ सोचने की तुलना में: "google it" या "यह स्पष्ट है" या "यह लिंक देखें" या कभी- परीक्षण किया और न कार्यात्मक-कोडनई ऐप्पल स्विफ्ट भाषा के साथ JSON कैसे पोस्ट करें

यह मैं क्या कोशिश कर रहा हूँ है:

var request = NSURLRequest(URL: NSURL(string: "http://localhost:3000"), cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5) 

var response : NSURLResponse? 
var error : NSError? 

NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) 

मैं कोशिश की थी:

var dataString = "some data" 

var request = NSMutableURLRequest(URL: NSURL(string: "http://posttestserver.com/post.php")) 
request.HTTPMethod = "POST" 

let data = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding) 

var requestBodyData: NSData = data 
request.HTTPBody = requestBodyData 

var connection = NSURLConnection(request: request, delegate: nil, startImmediately: false) 

println("sending request...") 
connection.start() 

धन्यवाद! :)

उत्तर

12

नैट के जवाब महान था, लेकिन मैं request.setvalue बदलने के लिए उस पर काम करने के लिए किया था मेरी सर्वर

// create the request & response 
var request = NSMutableURLRequest(URL: NSURL(string: "http://requestb.in/1ema2pl1"), cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5) 
var response: NSURLResponse? 
var error: NSError? 

// create some JSON data and configure the request 
let jsonString = "json=[{\"str\":\"Hello\",\"num\":1},{\"str\":\"Goodbye\",\"num\":99}]" 
request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
request.HTTPMethod = "POST" 
request.setValue("application/json", forHTTPHeaderField: "Content-Type") 

// send the request 
NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) 

// look at the response 
if let httpResponse = response as? NSHTTPURLResponse { 
    println("HTTP response: \(httpResponse.statusCode)") 
} else { 
    println("No HTTP response") 
} 
+0

इस लाइन पर मुझे बहिष्कृत घोषणा अनुरोध मिल रहा है। एचटीटीपीबीडी = जेसनस्ट्रिंग.dataUsingEncoding (NSUTF8StringEncoding, allowLossyConversion: true) लेकिन यह पहले ही घोषित किया गया है। – Venky

12

ऐसा लगता है कि तुम ठीक टुकड़े, बस काफी सही क्रम में नहीं किया है:

// create the request & response 
var request = NSMutableURLRequest(URL: NSURL(string: "http://requestb.in/1ema2pl1"), cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5) 
var response: NSURLResponse? 
var error: NSError? 

// create some JSON data and configure the request 
let jsonString = "json=[{\"str\":\"Hello\",\"num\":1},{\"str\":\"Goodbye\",\"num\":99}]" 
request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 
request.HTTPMethod = "POST" 
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 

// send the request 
NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error) 

// look at the response 
if let httpResponse = response as? NSHTTPURLResponse { 
    println("HTTP response: \(httpResponse.statusCode)") 
} else { 
    println("No HTTP response") 
} 
+2

नैट, मैं अपने कोड की कोशिश की और यह outputted है: "2014-07-05 12: 05: 24.125 PlaygroundStub_sim [1023: 194,623] *** createStorageTaskManagerForPath: withIdentifier में विफल रहा है: त्रुटि डोमेन = NSCocoaErrorDomain कोड = 4099 "ऑपरेशन पूरा नहीं हो सका। (कोको त्रुटि 40 99.) "(com.apple.nsurlstorage-cache नाम की सेवा से कनेक्शन को अवैध कर दिया गया था।) UserInfo = 0x10bb2fb70 {NSDebugDescription = com.apple.nsurlstorage-cache नाम की सेवा के कनेक्शन को अवैध कर दिया गया था।}; { NSDebugDescription = "Com.apple.nsurlstorage-cache नाम की सेवा के कनेक्शन को अवैध कर दिया गया था।"; } HTTP प्रतिक्रिया: 200 " – CodeWarrior

+1

@CodeWarrior मुझे एक ही समस्या है! क्या आप इसे हल करने में सक्षम थे? – StackPWRequirmentsAreCrazy

5

यहां एसिंक्रोनस अनुरोध का उपयोग करके थोड़ा अलग दृष्टिकोण है। आप इस तरह सिंक्रोनस दृष्टिकोण का भी उपयोग कर सकते हैं, लेकिन उपरोक्त सिंक्रोनस अनुरोध के ऊपर हर कोई, मैंने सोचा कि इसके बजाय एसिंक्रोनस अनुरोध दिखाएं। एक और बात यह है कि यह इस तरह से क्लीनर और आसान लगता है।

let JSONObject: [String : AnyObject] = [ 
     "name" : name, 
     "address" : address, 
     "phone": phoneNumber 
    ] 

    if NSJSONSerialization.isValidJSONObject(JSONObject) { 
     var request: NSMutableURLRequest = NSMutableURLRequest() 
     let url = "http://tendinsights.com/user" 

     var err: NSError? 

     request.URL = NSURL(string: url) 
     request.HTTPMethod = "POST" 
     request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData 
     request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
     request.HTTPBody = NSJSONSerialization.dataWithJSONObject(JSONObject, options: NSJSONWritingOptions(rawValue:0), error: &err) 

     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue()) {(response, data, error) -> Void in 
      if error != nil { 

       println("error") 

      } else { 

       println(response) 

      } 
     } 
    } 
+0

किसी भी विचार को JSON सरणी को सरणी के hte JSON ऑब्जेक्ट्स में से एक के रूप में कैसे शामिल किया जाए? मैं एक JSON स्ट्रिंग का निर्माण कर रहा हूं और इसे अपने JSON ऑब्जेक्ट्स में से एक के मान के रूप में जोड़ रहा हूं लेकिन यह विफल रहता है (स्कैप वर्णों को पार्स किया जाता है)। मेरा सर्वर लॉगिंग कर रहा है \ "[{\" कुंजी \ ": \" मान \ "}] \" –

संबंधित मुद्दे