2012-12-11 26 views
5

किसी भी प्रतिक्रिया से प्रतिक्रिया स्ट्रिंग नहीं मिल सकती है?): मुझे एक समस्या है जिसने मुझे पिछले 2 घंटों के लिए अपना सिर खरोंच कर दिया है, और यह संभवतः एक बहुत ही सरल बेवकूफ चीज है जो मुझे याद आ रही है । जब मैं ऑपरेशन @ AFNetworking से प्रतिक्रिया स्ट्रिंग को कॉल करता हूं तो मुझे बिल्डिंग त्रुटि मिलती है ... जैसे कोई ऐसी संपत्ति नहीं है ....AFNetworking: AFHTTPRequestOperation

कृपया मेरे कोड पर नज़र डालें और मुझे समझाएं कि मैंने यह क्या किया समय: पी .. धन्यवाद :)


NSDictionary* paramDict = [NSDictionary dictionaryWithObjectsAndKeys:WebServicemd5Value, WebSermd5Variable, nil] 
; 
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:webServiceURL]]; 

[httpClient defaultValueForHeader:@"Accept"]; 

[httpClient postPath:@"method" parameters:paramDict success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"Response data: %@", responseObject); 
    NSLog(@"Reponse String: %@", operation); 

// मुद्रण आपरेशन मुझे आपरेशन शब्दकोश दिखाएगा, प्रतिक्रिया क्षेत्र सहित // लेकिन जब मैं सीधे operation.response फोन, संकलक नहीं होगा बिल्ड करें, यह बताते हुए // "संपत्ति AFHTTPRequestOperation के लिए नहीं मिली" .... वेरथस्ट चीजें कभी, है ना?

NSString* responseString = [NSString stringWithUTF8String:[responseObject bytes]]; 
    //.. Rest o f my Code.... 

}failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error retrieving data: %@", error); 
}]; 
+0

मैं आप NSLog बजाय आपरेशन अपने आप में operation.response प्रिंट करना चाहते हैं। .. –

+0

क्या आप कह रहे हैं, कि जब आप एनएसएलओजी (@ "प्रतिक्रिया ऑब्जेक्ट% @", ऑपरेशन.response) करते हैं; - संकलक शिकायत करता है, लेकिन जब आप NSLog (@ "ऑपरेशन ऑब्जेक्ट% @", ऑपरेशन करते हैं); यह प्रिंट करता है और इसके तत्वों में से एक के रूप में प्रतिक्रिया होती है। आपका कंसोल आउटपुट क्या है। – Srikanth

+0

क्या आपने ऑपरेशन प्रतिक्रिया के अलग-अलग टुकड़ों को प्रिंट करने का प्रयास किया है? उदाहरण के लिए स्टेटस कोड 'एनएसएलओजी (@ "ऑपरेशन प्रतिक्रिया स्थिति =% @" प्रिंट करना, [NSHTTPURLResponse localizedStringForStatusCode: operation.response.statusCode]); ' –

उत्तर

15

हेर्नान, आप एक JSON प्रतिक्रिया आप, AFJSONRequestOperation उपयोग करने पर विचार करना चाहिए, क्योंकि आप अपनी सफलता कॉलबैक में एक JSON शब्दकोश पाने से एक NSDictionary उम्मीद है। वैसे भी, आप अपने responseObject से एक शब्दकोश पाने के लिए चाहते हैं, तो निम्नलिखित कोड का उपयोग करने का प्रयास करें: एक महान ढांचे के लिए Mattt टी AFNetworking (प्रशंसा का उपयोग कर meetup.com एपीआई से सामग्री प्राप्त करने का प्रयास करते समय

NSError *error = nil; 
NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error]; 
if (error) { 
    NSLog(@"Error serializing %@", error); 
} 
NSLog(@"Dictionary %@", JSON); 
+0

hi Amb: मेट का जवाब देने के लिए धन्यवाद ... मैं निश्चित रूप से प्रतिक्रिया ऑब्जेक्ट के लिए NSJSONSerialization की कोशिश कर रहा हूं, क्या मैं इसे जैसा रखता हूं? या मुझे इसे यूटीएफ 8 स्ट्रिंग में कनवर्ट करना चाहिए? [NSString stringWithUTF8String: [responseObject बाइट्स]] .... –

+0

अच्छा, मैंने कोशिश की, लेकिन सर्वर मुझे एक प्रतिक्रिया दे रहा है जो JSON पार्सर द्वारा पार्स किया गया ठीक नहीं है .. मुझे मिलता है: 2012-12-16 1 9 : 17: 14.536 Vidac [3561: 19d03] त्रुटि डोमेन को क्रमबद्ध करने में त्रुटि = NSCocoaErrorDomain Code = 3840 "ऑपरेशन पूरा नहीं हो सका। (कोको त्रुटि 3840.)" (वर्ण 0 के आसपास अमान्य मान) UserInfo = 0x94917d0 {NSDebugDescription = अमान्य चरित्र के आसपास मूल्य 0.} प्रतिक्रिया का मुद्रण विवरणऑब्जेक्ट: <59397142 7871677a ......> 2012-12-16 1 9: 17.542 Vidac [3561: 19d03] शब्दकोश (शून्य) –

+0

ऐसा लगता है कि आपका सर्वर पक्ष एक वैध JSON ऑब्जेक्ट को संपत्तिगत रूप से वापस नहीं कर रहा है, या आपको एन्कोडिंग के साथ कुछ समस्याएं हैं।अपने JSON स्ट्रिंग प्रतिक्रिया को कॉपी और पेस्ट करने का प्रयास करें और सब कुछ ठीक होने पर एक वैधकर्ता से जांचें। इसके अलावा, NSJSONSerialization विकल्पों की जांच करें। – amb

4

, बीटीडब्ल्यू), एक ही त्रुटि में भाग गया - "ऑपरेशन पूरा नहीं हो सका। (कोको त्रुटि 3840)"। यह समझ गया कि मेरे पास जो मुद्दा था, वह स्वीडिश चरित्र 'Ø' वाले प्रतिक्रिया डेटा के साथ था, जिसके परिणामस्वरूप पार्सिंग त्रुटि हुई थी। समाधान AFNetworking क्लाइंट के प्रारंभ में हेडर 'Accept-Charset: utf-8' को शामिल करना था। फिक्स्ड!

- (id)initWithBaseURL:(NSURL *)url { 
    self = [super initWithBaseURL:url]; 
    if (!self) { 
     return nil; 
    } 

    [self registerHTTPOperationClass:[AFJSONRequestOperation class]]; 

    // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1 
    [self setDefaultHeader:@"Accept" value:@"application/json"]; 
    [self setDefaultHeader:@"Accept-Charset" value:@"utf-8"]; 

    return self; 
} 
+0

"Ø" डैनिश है। स्वीडिश संस्करण "ओ" होगा। :) – jlowgren

5

मेरा मानना ​​है कि प्रतिक्रिया स्ट्रिंग "ऑपरेशन" ऑब्जेक्ट के अंदर है, इसलिए कुछ की तरह:

... 
}failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error retrieving data: %@", operation.responseString); 
}]; 

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

  • कोई संबंधित समस्या नहीं^_^