2013-05-17 14 views
5

के साथ अनुरोध करने के लिए पैरामीटर जोड़ना मैंने हाल ही में CodeSchool course to learn iOS का पालन किया और वे सर्वर से बातचीत करने के लिए AFNetworking का उपयोग करने की सलाह देते हैं।AFNetworking

मैं अपने सर्वर से JSON प्राप्त करने का प्रयास कर रहा हूं, लेकिन मुझे यूआरएल में कुछ पैरामीटर पास करने की आवश्यकता है। मैं इन पैरामीटर को यूआरएल में जोड़ना नहीं चाहता क्योंकि उनमें उपयोगकर्ता पासवर्ड हैं।

एक सरल URL अनुरोध मैं निम्नलिखित कोड है के लिए:

NSURL *url = [[NSURL alloc] initWithString:@"http://myserver.com/usersignin"]; 
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation 
     JSONRequestOperationWithRequest:request 
       success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
         NSLog(@"%@",JSON); 
       } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
         NSLog(@"NSError: %@",error.localizedDescription);    
       }]; 

[operation start]; 

मैं NSURLRequest के प्रलेखन जाँच कर ली है लेकिन वहाँ से कुछ भी उपयोगी नहीं मिला।

सर्वर में पढ़ने के लिए इस अनुरोध को मैं उपयोगकर्ता नाम और पासवर्ड कैसे पास कर सकता हूं?

उत्तर

6

आप एक AFHTTPClient उपयोग कर सकते हैं।

2

आप इस तरह से एक NSURLRequest पर पोस्ट पैरामीटर सेट कर सकते हैं:

NSString *username = @"theusername"; 
NSString *password = @"thepassword"; 

[request setHTTPMethod:@"POST"]; 
NSString *usernameEncoded = [username stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *passwordEncoded = [password stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

NSString *postString = [NSString stringWithFormat:[@"username=%@&password=%@", usernameEncoded, passwordEncoded]; 
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 

दूसरे शब्दों में, आप एक क्वेरी स्ट्रिंग उसी तरह जैसे कि आप URL में पैरामीटर गुजर रहे थे बनाने के लिए, लेकिन करने के लिए विधि सेट POST और यूआरएल में ? के बाद स्ट्रिंग को HTTP बॉडी में डालें।

NSURL *url = [[NSURL alloc] initWithString:@"http://myserver.com/"]; 
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:url]; 

NSURLRequest *request = [client requestWithMethod:@"POST" path:@"usersignin" parameters:@{"key":@"value"}]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation 
    JSONRequestOperationWithRequest:request 
      success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
        NSLog(@"%@",JSON); 
      } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
        NSLog(@"NSError: %@",error.localizedDescription);    
      }]; 

[operation start]; 

आदर्श रूप में, आप AFHTTPClient उपवर्ग और उसके postPath:parameters:success:failure: विधि का उपयोग करना चाहते हैं, बजाय मैन्युअल रूप से एक अभियान बनाने और इसे शुरू करने की:

+0

हाँ, HTTPClient ** requestWithMethod के दृश्य के पीछे हाँ: पथ: पैरामीटर: ** – onmyway133