2010-08-18 12 views
17

मैं अपना पहला आईपैड ऐप बना रहा हूं। मेरे पास एक वेब एप्लिकेशन है जिसे मैं एक यथार्थ तरीके से डेटा को प्रमाणित करना और खींचना चाहता हूं।आईओएस: क्रेडेंशियल्स पास करने के लिए एक सुरक्षित HTTPS कनेक्शन कैसे बनाएं?

यदि आप ब्राउज़र में URL खोलते हैं (https://myapp.com/auth/login), तो आपको अपना उपयोगकर्ता नाम और पासवर्ड दर्ज करने के लिए एक फॉर्म प्राप्त होगा। मैं सोच रहा था कि मैं अनुरोध के पोस्ट डेटा में लॉगिन प्रमाण-पत्र सेट कर सकता हूं और डेटा जमा कर सकता हूं।

साइट लॉगिन के लिए HTTPS का उपयोग करती है ताकि इंटरनेट पर सादे पाठ में प्रमाण-पत्र पारित न हों।

मैं प्रमाण-पत्र पास करने के लिए एक सुरक्षित HTTPS कनेक्शन कैसे बना सकता हूं? क्या यह याद होगा कि मैं भविष्य के अनुरोधों के लिए लॉग इन हूं? इसे करने का बेहतरीन तरीका क्या है?

उत्तर

13

इसके अलावा अद्यतन अक्टूबर 2013

हालांकि समय मैं इस जवाब लिखा पर, ASIHTTPRequest बनाए रखा गया था एक व्यापक रूप से समर्थन किया, अब यह मामला है। नई परियोजनाओं के लिए इसकी अनुशंसा नहीं की जाती है - इसके बजाय सीधे NSURLConnection का उपयोग करें, या AFNetworking का उपयोग करें।

AFNetworking के साथ, http प्रमाणीकरण के लिए [httpClient setAuthorizationHeaderWithUsername:username password:password]; विधि है, और एक पोस्ट स्टाइल फॉर्म बनाएं उतना ही आसान है - AFNetworking Post Request इसके लिए देखें।


मूल जवाब:

लोगों का एक बहुत ASIHTTPRequest वर्ग का उपयोग करें, साथ http & https iPhone/iPad पर निपटने के लिए के रूप में यह उपयोगी सुविधाओं है कि मुश्किल या समय लेने वाली हैं की एक बहुत कुछ है कक्षाओं में बनाया के साथ प्राप्त करने के लिए: सरलतम स्तर पर प्रारंभ हो

http://allseeing-i.com/ASIHTTPRequest/

आप की तरह कुछ के साथ शुरू होता है:

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

    [request startSynchronous]; 
    NSError *error = [request error]; 
    if (!error) { 
     NSString *response = [request responseString]; 
     NSLog(@"response = %@", response); 
    } 

यदि आप HTTP प्रमाणीकरण का उपयोग कर रहे हैं, तो ASIHTTPRequest उपयोगकर्ता को उपयोगकर्ता नाम और पासवर्ड के लिए स्वचालित रूप से संकेत देगा।

यदि आप प्रमाणीकरण के किसी अन्य रूप का उपयोग कर रहे हैं तो आपको शायद उपयोगकर्ता से उपयोगकर्ता नाम और पासवर्ड का अनुरोध करने की आवश्यकता है, और उन्हें POST मान या कस्टम http शीर्षलेख के रूप में सबमिट करना होगा, और फिर प्रतिक्रिया में या तो टोकन शामिल हो सकता है एक JSON या XML प्रतिक्रिया में, या यह एक कुकी सेट कर सकता है।

यदि आप प्रमाणीकरण योजना कैसे काम करता है, इस बारे में अधिक जानकारी जोड़ते हैं तो मैं थोड़ा और विशिष्ट हो सकता हूं।

अद्यतन

अद्यतन के आधार पर, यह POST में आप जैसे लाइनों को जोड़ने की आवश्यकता होगी अनुकरण करने के लिए:

[request addPostValue:usernameString forKey:@"username"]; 
[request addPostValue:passwordString forKey:@"password"]; 

तुम भी जिस तरह से आप अनुरोध बनाने बदलना होगा के बजाय:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

कार्य करें:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 

(मैं इसे ऊपर वर्णित करना भी भूल जाता हूं, मैंने पहले जो कोड डाला है, वह एक सिंक्रोनस अनुरोध का उपयोग कर रहा है, इसलिए आप यह सुनिश्चित करने के बाद यूआई को अवरुद्ध करने से बचने के लिए इसे एसिंक्रोनस से बदलना चाहते हैं।)

iphone यहाँ एक JSON ढांचे नहीं है:

http://code.google.com/p/json-framework/

जो मेरे लिए अच्छी तरह से काम करता है और ASIHTTPRequest साथ उपयोग करने के लिए सरल है।

+0

मैंने थोड़ा और स्पष्टीकरण जोड़ा। एप्लिकेशन बुनियादी HTTP प्रमाणीकरण नहीं है। यह एक वेबपृष्ठ पर प्रदर्शित एक फॉर्म है जिसे आप अपने क्रेडेंशियल दर्ज करते हैं। मैं इसे ट्विक करने की कोशिश कर रहा हूं ताकि यह एक विश्वसनीय एपीआई के रूप में कार्य कर सके जो मैं डेटा के खिलाफ प्रमाणित कर सकता हूं और क्वेरी कर सकता हूं (जो JSON प्रारूप में वापस आ जाएगा)। – Andrew

+0

ठीक है, मैंने थोड़ा और विस्तार से अपना जवाब अपडेट कर दिया है। अनिवार्य रूप से यह सभी ASIHTTPRequest के साथ काफी सरल होना चाहिए। – JosephH

+0

तो, एक बार जब मैंने/auth/login के अनुरोध को "पोस्ट" किया है, तो क्या मेरा आईफोन ऐप याद रखेगा कि यह प्रमाणित है? ब्राउज़र में, कुकीज़ मिलती हैं जो सेट हो जाती हैं। दूसरे शब्दों में, अब जब मैं "प्रमाणीकृत" हूं, तो क्या मैं एक और अनुरोध कर सकता हूं जिसके लिए आपको प्रमाणीकृत होना आवश्यक है? (यानी जीईटी/उपयोगकर्ता/सभी) – Andrew

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