2012-02-07 11 views
6

मैं सभी HTTP कॉल को रोकने और उपयोगकर्ता एजेंट को संशोधित करने के साथ ही मेरे सर्वर द्वारा आवश्यक अन्य http शीर्षलेख जोड़ने के लिए NSURLProtocol का उप-वर्ग का उपयोग कर रहा हूं।NSURLProtocol और पोस्ट अपलोड प्रगति

-(id)initWithRequest:(NSURLRequest *)request 
     cachedResponse:(NSCachedURLResponse *)cachedResponse 
       client:(id <NSURLProtocolClient>)client 
{ 
    NSMutableURLRequest* lInnerRequest; 
    //************************************************ 

    lInnerRequest = [request mutableCopy]; 
    [lInnerRequest setValue:@"MyUserAgent" forHTTPHeaderField:@"User-Agent"]; 

    //************************************************ 
    self = [super initWithRequest:lInnerRequest 
        cachedResponse:cachedResponse 
          client:client]; 
    //************************************************ 
    if (self) 
    { 
     self.innerRequest = lInnerRequest; 
    } 
    //***********************************00************* 
    [lInnerRequest release]; 
    //************************************************ 
    return self; 
} 

मेरे प्रोटोकॉल तो का उपयोग करता है एक NSURLConnection

- (void)startLoading 
{ 
self.URLConnection = [NSURLConnection connectionWithRequest:self.innerRequest delegate:self]; 
} 

मैं तो बराबर NSURLProtocolClient विधि करने के लिए कॉल अग्रेषित कर NSURLConnection में सभी प्रतिनिधि विधि को लागू। यह सामान्य रूप में अच्छी तरह से काम लेकिन जब मैं सर्वर से डेटा अपलोड कर रहा है, मेरे कोड है जो NSURLConnection उपयोग कर रहा है पर वापस नहीं बुलाया हो जाता है:

कनेक्शन: didSendBodyData: totalBytesWritten: totalBytesExpectedToWrite:

मुझे समझ में क्यों है चूंकि मैंने NSURLProtocol में उस विधि को लागू नहीं किया है क्योंकि अपलोड प्रगति की रिपोर्ट करने के लिए कोई समकक्ष NSURLProtocolClient विधि नहीं है जिसका उपयोग किया जा सकता है।

क्या किसी को इसके लिए कोई कामकाज मिला है?

+0

पर कॉल करने के लिए NSURLConnection ऑब्जेक्ट और प्रतिनिधि का उपयोग करें, यह एक बहुत ही रोचक समस्या है। क्या आपने कभी ऐसा करने का कोई तरीका खोज लिया है? – jasongregori

+0

सटीक उसी उपयोग के मामले में एक ही समस्या है। क्या किसी को कोई कामकाज पता है? – nyi

उत्तर

0

यह एक HTTP POST अनुरोध करने के लिए अपने कोड को यह पंक्ति जोड़ें: जब NSURLConnection और प्रतिनिधि वस्तु सहेजें, और फिर propertyForKey:inRequest: उपयोग करने के लिए कस्टम NSURLProtocol कक्षा में NSURLConnection वस्तु लोड और वस्तु को सौंपने के लिए

[lInnerRequest setHTTPMethod:@"POST"]; 
+0

यह काम नहीं करता है। किसी भी मामले में 'lInnerRequest = [अनुरोध mutableCopy]; 'विधि को कॉपी करना चाहिए था – terrinecold

-1

उपयोग setProperty:forKey:inRequest:, भेजा गया डेटा, प्रतिनिधि विधि

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