2012-09-16 33 views
14

मुझे AFNetworking से POST अनुरोध करते समय त्रुटि.userInfo में यह प्रतिक्रिया मिल रही है। क्या कोई भी बता सकता है कि मुझे कुछ भी याद आ रहा है या मेरे सर्वर के अंत में कुछ ठीक करने की आवश्यकता है?AFNetworking और POST अनुरोध

Request Failed with Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {( "text/json", "application/json", "text/javascript")}, got text/html" UserInfo=0x6d7a730 {NSLocalizedRecoverySuggestion=index test, AFNetworkingOperationFailingURLResponseErrorKey=, NSErrorFailingURLKey=http://54.245.14.201/, NSLocalizedDescription=Expected content type {( "text/json", "application/json", "text/javascript")}, got text/html, AFNetworkingOperationFailingURLRequestErrorKey=http://54.245.14.201/>}, { AFNetworkingOperationFailingURLRequestErrorKey = "http://54.245.14.201/>"; AFNetworkingOperationFailingURLResponseErrorKey = ""; NSErrorFailingURLKey = "http://54.245.14.201/"; NSLocalizedDescription = "Expected content type {(\n \"text/json\",\n \"application/json\",\n
\"text/javascript\"\n)}, got text/html"; NSLocalizedRecoverySuggestion = "index test"; }

और मैं इस कोड का उपयोग कर रहा हूं;

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]]; 
[httpClient setDefaultHeader:@"Accept" value:@"application/json"]; 
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
         @"Ans", @"name", 
         @"29", @"age", 
         nil]; 

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/" parameters:params]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
    success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
     NSLog(@"Success"); 
     NSLog(@"%@",JSON); 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
     NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo); 
     NSLog(@"Failure"); 
}]; 

[operation start]; 
[operation waitUntilFinished]; 
+0

एक पूछताछ, आपके पास "[ऑपरेशन प्रतीक्षा नहीं है] समाप्त"; "? क्या इसकी आवश्यकता है और क्या यह एक अवरुद्ध कॉल है? धन्यवाद! :) – trillions

+1

तो ... उपर्युक्त कोड में आपने/स्वीकृत समाधान को कैसे लागू किया? – Morkrom

उत्तर

46

डिफ़ॉल्ट रूप से काम करता है, AFJSONRequestOperation केवल "text/json" स्वीकार करता है: यदि हां, तो आप इसके लिए आपरेशन वर्ग निर्धारित करने की आवश्यकता , सर्वर से "एप्लिकेशन/जेसन" या "टेक्स्ट/जावास्क्रिप्ट" सामग्री-प्रकार, लेकिन आपको "टेक्स्ट/एचटीएमएल" मिल रहा है।

सर्वर पर फिक्सिंग बेहतर होगा, लेकिन आप यह भी जोड़ सकते हैं "text/html" सामग्री अपने अनुप्रयोग में के रूप में स्वीकार्य टाइप करें:

[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]]; 

यह मेरे लिए काम किया, उम्मीद है कि इस मदद करता है!

4

क्या आपने यह POST अनुरोध AFHTTPClient द्वारा भेजा था? जाँच इस कोड में

AFHTTPClient * client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://localhost:8080"]]; 
// ... 
[client registerHTTPOperationClass:[AFJSONRequestOperation class]]; 
[client setDefaultHeader:@"Accept" value:@"application/json"]; 
// ... 

// EDIT: Use AFHTTPClient's POST method 
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
         @"Ans", @"name", 
         @"29", @"age", nil]; 

// POST, and for GET request, you need to use |-getPath:parameters:success:failure:| 
[client postPath:@"/" 
     parameters:params 
     success:^(AFHTTPRequestOperation *operation, id responseObject) { 
      NSLog(@"RESPONSE: %@", responseObject); 
      // ... 
     } 
     failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      if (error) 
      NSLog(@"%@", [error localizedDescription]); 
      // ... 
     } 
+0

हां; मैं AFHTTPClient का उपयोग कर रहा हूं, और कक्षा का भी उल्लेख किया है; कृपया मेरे कोड को देखें, मैंने अभी अपना प्रश्न संपादित किया है; – Ans

+0

@ वहाँ एक 'पोस्टपोथ है: पैरामीटर: सफलता: AFHTTP क्लाइंट के लिए विधि। या तुमने कोशिश की? – Kjuly

+0

आपकी प्रतिक्रिया के लिए धन्यवाद; मैंने आपके कोड की कोशिश की लेकिन अब न तो सफलता और न ही विफलता ब्लॉक को निष्पादित किया गया था; – Ans

0

अपने मान सेट और यदि आप इसके लिए

AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:[NSURL URLWithString:kBASEURL]]; 
     NSString *_path = [NSString stringWithFormat:@"groups/"]; 
     _path = [_path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
     NSLog(@"%s %@",__PRETTY_FUNCTION__,_path); 
     NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" 
                   path:_path 
                  parameters:postParams]; 
     [httpClient release]; 

     AFJSONRequestOperation *operation = [AFJSONRequestOperation 
              JSONRequestOperationWithRequest:request 
              success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
               if ([JSON isKindOfClass:[NSArray class]] || [JSON isKindOfClass:[NSDictionary class]]) { 
                completed(JSON); 
               } 
               else { 
               } 
               [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];            

              } 
              failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
               NSLog(@" response %@ \n error %@ \n JSON %@",response,error,JSON); 
               [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];           
               errored(error); 
              }]; 

     NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease]; 
     [queue addOperation:operation]; 
     [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
+0

यहां kBASEURL http://xyz.com/api और समूह/एपीआई चाहिए अंत बिंदु सही ?? umm .. अच्छी तरह से मैंने यह कोशिश की लेकिन जब यह कॉल भेजा गया, तो कुछ भी नहीं हुआ; सुनिश्चित नहीं है कि वास्तव में क्या हो रहा है; भले ही मेरा यूआरएल सही रूप में न हो, फिर भी विफलता ब्लॉक आदि में एक एरो इत्यादि फेंक दें; – Ans

+0

पूरा यूआरएल – yunas

+0

सत्यापित करें मैंने अपना बेस यूआरएल kBASEURL के स्थान पर रखा है और अपने समूह/मेरे एपीआई एंड पॉइंट के साथ प्रतिस्थापित किया है; क्या यह ठीक है? – Ans

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