2011-11-03 19 views
8

का उपयोग करता हूं, तो मैं अपनी ग्राहक कंपनी में सेवा कर रहा हूं। और मैं AFNetWorking द्वारा हमारे सर्वर से कुछ जानकारी प्राप्त करने का प्रयास करता हूं (हमारा ग्राहक AFNetWorking का उपयोग करने के लिए प्रोत्साहित करता है) मैंने AFNetWorking का उपयोग करके कुछ नमूना किया, और यह काम है। लेकिन जब मैं अपने ग्राहकों URL में से एक का उपयोग JSON डेटा प्राप्त करने के लिए, यह विफल रहा है और इस त्रुटि वर्णन है:त्रुटि कोड -1011 जब मैं AFNetWorking

Error Domain=com.alamofire.networking.error Code=-1011 
"Expected status code <NSIndexSet: 0x7e274f0>[number of indexes: 100 (in 1 ranges), 
indexes: (200-299)], got 403" UserInfo=0x7b64040 {NSErrorFailingURLKey=<url_hidden_for_stackoverflow>, 
NSLocalizedDescription=Expected status code <NSIndexSet: 0x7e274f0>[number of indexes: 100 (in 1 ranges), indexes: (200-299)], got 403} 

मैं कुछ समाधान पता लगाने के लिए प्रयास करते हैं, लेकिन मैं अभी तक ठीक नहीं कर सकते। मेरा कोड है:

NSURL *url = [NSURL URLWithString:@"http://example.com/"]; 
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
//[httpClient setDefaultHeader:@"Accept" value:@"text/json"]; 
//NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:CONST_KEY_REGISTER_UNIQUE_KEY, CONST_API_KEY_TEXT,nil]; 
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"path/to/page.json" parameters:nil]; 
[httpClient release]; 
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSString *status = [JSON valueForKey:@"status"]; 
    if ([status isEqualToString:@"OK"]) { 
     NSString *uniqueId = [JSON valueForKey:@"uniqueId"]; 
     [UserSettings setWithKey:CONST_PROGRAM_UNIQUE_KEY value:uniqueId]; 
    } 
    //NSString *message = [json valueForKey:@"message"]; 
    //NSString *error = [json valueForKey:@"error"]; 
    [[LoadingView instance] performSelectorOnMainThread:@selector(removeLoadingView) withObject:nil waitUntilDone:YES]; 
} 
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
    NSString *errorString = [error description]; 
    [[LoadingView instance] performSelectorOnMainThread:@selector(removeLoadingView) withObject:nil waitUntilDone:YES]; 
}]; 
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease]; 
[queue addOperation:operation]; 

पढ़ने के लिए धन्यवाद, और किसी भी मदद या उत्तर की सराहना की जाएगी।

संपादित करें: डार्कडस्ट ने कहा: सर्वर मेरी पहुंच से इंकार कर देता है। लेकिन मैं बुनियादी कनेक्शन द्वारा सर्वर से डेटा प्राप्त कर सकते हैं: यहाँ प्राप्त करने के लिए कोड है:

NSURL *url = [NSURL URLWithString:@"http://example.com/path/to/page.json"]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:CONST_CONNECTION_TIMEOUT]; 
rssConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 
[self performSelectorOnMainThread:@selector(downloadStarted) withObject:nil waitUntilDone:NO]; 
if (rssConnection != nil) { 
    do { 
     [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; 
    } while (!done); 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    // I can get text here, but it is not JSON format 
NSString *content = [NSString stringWithUTF8String:[data bytes]]; 
} 

मुझे आश्चर्य है कि क्यों rssConnection JSON टेक्स्ट हो और कर सकते हैं AFHTTPClient नहीं?

+1

क्या आपको सच में लगता है कि बिना किसी परेशानी के आपके ग्राहक के आंतरिक/निजी विवरण पोस्ट करना एक अच्छा विचार है? – DarkDust

+0

यह सिर्फ एक परीक्षण पृष्ठ है, न कि निजी पृष्ठ। खत्म होने से पहले और अधिक बदलाव आएगा। और भविष्य में, एक्सेस करने के लिए एपीआई कुंजी की आवश्यकता होगी, और निश्चित रूप से, मैं इसे – magichero

+1

छुपाता हूं, फिर भी, अब सभी लोग देख सकते हैं कि आपका ग्राहक कौन है। आपका ग्राहक इसके बारे में बहुत खुश नहीं हो सकता है। – DarkDust

उत्तर

1

सर्वर HTTP त्रुटि कोड 403 के साथ प्रतिक्रिया दे रहा है जिसका अर्थ है निषिद्ध। यह आपको पहुंच से इंकार कर देता है। आपको यह पता लगाना होगा कि क्यों, उदाहरण के लिए सर्वर लॉग पढ़ना (यदि आप कर सकते हैं) या सर्वर प्रशासक से आपकी मदद करने के लिए कह रहे हैं। यह उस सर्वर पर पहुंच प्रतिबंध हो सकता है जिसे उठाया/संशोधित करने की आवश्यकता है।

संपादित करें: एक HTTP POST एक ऐसा ऑपरेशन है जो सर्वर पर कुछ सहेजना चाहता है। जबकि सामान्य GET आपके संपादित प्रश्न के अनुसार ठीक काम करता है, बचत अभी प्रतिबंधित है। करने के लिए पहली बात अभी भी सर्वर विन्यास की जांच है। इसके अतिरिक्त, यदि आपका यूआरएल एक स्क्रिप्ट (जेएसपी, एएसपी, जो कुछ भी) को इंगित करता है, जो एकमात्र चीज है जो आपके मामले में समझ में आती है तो आपको यह जांचने की ज़रूरत है कि यह आपको क्यों एक्सेस करता है (यदि सर्वर कॉन्फ़िगरेशन पहले से इनकार नहीं करता है यह, यह स्क्रिप्ट होना चाहिए)।

+0

आपके द्वारा पोस्ट किया गया त्रुटि संदेश स्पष्ट रूप से बताता है 'अपेक्षित स्थिति कोड ..., 403 मिल गया। सर्वर आपको पहुंच से इंकार कर रहा है। – DarkDust

+0

मैं अपनी पोस्ट संपादित करता हूं, क्योंकि अगर मैं टिप्पणी जोड़ता हूं, तो मैं आपको स्पष्ट रूप से नहीं बता सकता कि मुझे क्या चाहिए। – magichero

+0

@magichero: मेरा उत्तर अपडेट किया गया। – DarkDust

23

गूगल के माध्यम से उच्च खोज परिणाम की वजह से संदर्भ के रूप में ...

दूसरों कि AFNetworking के माध्यम से पुनःप्राप्त संभव त्रुटि कोड के लिए देख रहे हैं के लिए, URL Loading System Error Codes के लिए सेब के दस्तावेज़ के रूप में ये एक ही कर रहे हैं।

NSURLErrorBadServerResponse = -1011

लौटे यूआरएल लोड हो रहा है प्रणाली सर्वर से गलत डेटा प्राप्त करता है। यह HTTP सर्वर द्वारा भेजे गए "500 सर्वर त्रुटि" संदेश के बराबर है।

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