swift - nsMutableUrl addvalue adding quotes "" around key -
मेरा अंत लक्ष्य एक सरल आईफोन दृश्य है, जब स्विच चालू होता है, जब मेरे स्पार्क कोर के लिए एक पोस्ट अनुरोध भेजता है (वाईफाई माइक्रोचिप) रिले को चालू करने के लिए
मैं एक प्रारूप में पैरामीटर जोड़ने के लिए संघर्ष कर रहा हूं जो पोस्ट अनुरोध के लिए काम करता है। यह एक CLI में काम करता है:
कर्ल https://api.spark.io/v1/devices/<myDeviceId>/led-d access_token = & lt; myAccessToken & gt; -d params = l1, कम
यह मेरा प्रयास स्विफ्ट में पुन: उत्पन्न करने का प्रयास है:
func toggleLight (on: Bool) {var urlToUse = sparkAPIBaseURL + coreId + lightsMethodName वर url = NSURL.URLWithString (urlToUse) वर अनुरोध = NSMutableURLRequest (यूआरएल: यूआरएल) वर सत्र = NSURLSession.sharedSession () request.HTTPMethod = "पोस्ट" अगर (पर == सच) {request.setValue ( paramsForOn, forHTTPHeaderField: "पैरामीटर")} else {request.setValue (paramsForOff, forHTTPHeaderField: "पैरामीटर")} // अगर request.setValue (accessToken, forHTTPHeaderField: "ACCESS_TOKEN") println ( "अनुरोध: \ (अनुरोध)") वर कार्य = session.dataTaskWithRequest (अनुरोध, completionHandler: {डेटा, प्रतिक्रिया, त्रुटि - & gt; println में शून्य ( "प्रतिक्रिया: \ (प्रतिक्रिया)") वर strData = NSString (डेटा: डेटा, एन्कोडिंग: NSUTF8StringEncoding) println (strData) Self.responseDataLabel.text = strData}) / task task.resume () // पता नहीं यह क्या करता है } // टॉगललाइट
प्रिंटलेन कुंजी "access_token" के आस-पास के बाहरी उद्धरणों का अनुरोध दिखाता है, जिसे मैं समस्या मानता हूं:
अनुरोध : & Lt; NSMutableURL अनुरोध: 0x7a62a450 & gt; {URL: https://api.spark.io/v1/devices/<myDeviceId>/led, हेडर: {"access_token" = & lt; myAccessToken & gt;; पैराम्स = "एल 1, लो"; }}
प्रतिक्रिया से पता चलता है कि एक्सेस टोकन नहीं मिला है:
प्रतिक्रिया: & lt; NSHTTPURL उत्तर: 0x7b654c60 & gt; {URL: https://api.spark.io/v1/devices/<myDeviceId>/led} {स्थिति कोड: 400, हेडर {"एक्सेस-कंट्रोल-अनुमति-उत्पत्ति" = "*"; कनेक्शन = "रख-जिंदा"; "सामग्री-लंबाई" = 104; "सामग्री-प्रकार" = "आवेदन / जेसन; वर्णसेट = यूटीएफ -8"; दिनांक = "सूर्य, 27 जुलाई 2014 18:21:45 GMT"; सर्वर = "एनजीएन / 1.6.0"; "X-Powered-By" = Express;}} {"code": 400, "error": "invalid_request", "error_description": "एक्सेस टोकन नहीं मिला"}
मैंने सेट वैल्यू के साथ ही addValue की कोशिश की लेकिन वे दोनों उद्धरण और मूल्य जोड़कर प्रमुख एक्सेस_token का इलाज करते हैं, जहां उद्धरण चिह्नों के बिना कुंजी पैरामीटर और मूल्य नहीं होता है।
धन्यवाद!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
स्टैक मुझे कुछ और घंटे के लिए अपने खुद के सवाल का जवाब नहीं दूँगा , इसलिए यह काम कोड है जो इस मुद्दे का समाधान कर रहा है: धन्यवाद योना - मैंने एक मित्र से सीखा है कि स्पार्क कोर को शरीर में प्रमुख मूल्य जोड़ों की आवश्यकता है, इसलिए यह काम कोड है जो मुझे कूबड़ पर ले गया:
<कोड> समारोह toggleLight (पर: बूल) {var urlToUse = sparkAPIBaseURL + coreId + lightsMethodName वर url = NSURL.URLWithString (urlToUse) वर अनुरोध = NSMutableURLRequest (यूआरएल: यूआरएल) वर सत्र = NSURLSession.sharedSession () request.HTTPMethod = "पोस्ट" var पैरामीटर: स्ट्रिंग अगर (पर == सच) {params = paramsForOn} और {params = paramsForOff} // यदि ** var संदेश = "access_token = \ (accesstoken) और params = \ (params)" अनुरोध .HTTPBody = (संदेश NSString के रूप में) .डेटाउज़िंगइन्कोडिंग (NSUTF8StringEncoding) ** println ("अनुरोध: \ (अनुरोध)") var कार्य = session.dataTaskWit HRequest (अनुरोध, पूरा होन्डलर: {डेटा, प्रतिक्रिया, त्रुटि - & gt; Println में शून्य ("प्रतिक्रिया: \ (प्रतिक्रिया)") var strData = NSString (डेटा: डेटा, एन्कोडिंग: NSUTF8StringEncoding) println (strData) self.responseDataLabel.text = strData}) // कार्य task.resume () // no विचार यह क्या करता है} // टॉगललाइट
स्पार्क के लिए आपको प्रवेश टोकन को भेजने की आवश्यकता है
var संदेश = "access_token = & lt; टोकन & gt; और amp; params = & lt; your_params & gt;"
फिर अनुरोध में:
request.HTTPBody = (NSString के रूप में संदेश) .डेटाउज़िंग एनकोडिंग (NSUTF8StringEncoding)
Comments
Post a Comment