संक्षिप्त बैकस्ट्रीरी, हमारे पिछले डेवलपर ने POST अनुरोध करने और हमारे webservice से डेटा पुनर्प्राप्त करने के लिए ASIHTTPRequest का उपयोग किया। अज्ञात कारणों से हमारे ऐप के इस हिस्से ने काम करना बंद कर दिया। भविष्य के प्रमाण के लिए पर्याप्त समय की तरह लगता है और AFNetworking के साथ जाना। आरईएसटी webservice केकेपीएचपी ढांचे पर चलता है।आरईएसटी webservice
संक्षेप में मुझे AFNetworking का उपयोग कर अनुरोध प्रतिक्रिया स्ट्रिंग प्राप्त नहीं हो रही है।
मैं जानता हूँ कि वेब सेवा से काम करता है, क्योंकि मैं सफलतापूर्वक डेटा पोस्ट और का उपयोग कर उचित प्रतिक्रिया प्राप्त करने में सक्षम हूँ कर्ल: कर्ल -d "डेटा [मॉडल] [field0] = field0value & डेटा [मॉडल] [फ़ील्ड 1] = field1value" https://example.com/api/class/function.plist
पिछले डेवलपर के निर्देशों के अनुसार मैं निम्नलिखित के साथ आया था।
#import "AFHTTPRequestOperation.h"
…
- (IBAction)loginButtonPressed {
NSURL *url = [NSURL URLWithString:@"https://example.com/api/class/function.plist"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setValue:[usernameTextField text] forHTTPHeaderField:@"data[User][email]"];
[request setValue:[passwordTextField text] forHTTPHeaderField:@"data[User][password]"];
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"operation hasAcceptableStatusCode: %d", [operation.response statusCode]);
NSLog(@"response string: %@ ", operation.responseString);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", operation.responseString);
}];
[operation start];
}
उत्पादन: आपरेशन hasAcceptableStatusCode: 200 प्रतिक्रिया स्ट्रिंग: एक खाली plist फ़ाइल
प्रयास किया समाधान 1: AFNetworking Post Request प्रस्तावित समाधान AFHTTPRequestOperation के एक समारोह operationWithRequest कहा जाता है का उपयोग करता है। हालांकि, जब मैं समाधान का उपयोग करने का प्रयास करता हूं तो मुझे एक चेतावनी मिलती है "क्लास विधि '+ ऑपरेशनविथरक्वेट: पूर्णता:' नहीं मिला (वापसी प्रकार डिफ़ॉल्ट 'आईडी'
समाधान 2 का प्रयास किया गया: NSURLConnection। आउटपुट: मैं सक्षम हूं संदेश भेजा सफलता लॉग नहीं लेकिन प्रतिक्रिया स्ट्रिंग मुद्रित करने के लिए * अद्यतन -।।
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSString *httpBodyData = @"data[User][email][email protected]&data[User][password]=awesomepassword";
[httpBodyData dataUsingEncoding:NSUTF8StringEncoding];
[req setHTTPMethod:@"POST"];
[req setHTTPBody:[NSData dataWithContentsOfFile:httpBodyData]];
NSHTTPURLResponse __autoreleasing *response;
NSError __autoreleasing *error;
[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&error];
// *update - returns blank plist
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"responseData %@",str);
if (error == nil && response.statusCode == 200) {
// Process response
NSLog(@"success");//returns success code of 200 but blank
NSLog(@"resp %@", response);
} else {
// Process error
NSLog(@"error");
}
हैलो, पोरिया, क्या आपने एक सिंक्रोनस अनुरोध भेजने के लिए NSURLConnection का उपयोग करने का प्रयास किया था? – 8vius
समाधान 2 का प्रयास किया: यह है कि मैंने NSURLConnection की कोशिश की। – Airuop
क्या आपके पास सर्वर की तरफ से सब कुछ ठीक से स्थापित है? एक्सटेंशन पार्सिंग की तरह, प्रतिक्रिया के लिए लेआउट और उनके लिए विचार? ऐसा लगता है कि क्लाइंट की तुलना में सर्वर की समस्या अधिक है। – 8vius