2009-04-24 16 views
13

के लिए यूआरएल एन्कोड करें मैं NSURLRequest का उपयोग कर एक पोस्ट भेज रहा हूं।NSURLRequest - NSURLRequest POST बॉडी (आईफोन उद्देश्य-सी)

NSURL *url = [NSURL URLWithString:someUrlString]; 
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url]; 
NSString *msgLength = [NSString stringWithFormat:@"%d", [parameterString length]]; 
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"]; 
[theRequest setHTTPMethod:@"POST"]; 
[theRequest setHTTPBody: [parameterString dataUsingEncoding:NSUTF8StringEncoding]]; 

अनुरोध मैं निम्नलिखित NVP एन्कोडिंग कर रहा हूँ के शरीर के भीतर:

returnURL = http://someSite.com

पोस्ट सफलतापूर्वक से गुजर रहा है, लेकिन मैं एक त्रुटि वापस मिलता है। त्रुटि एक अवैध यूआरएल बताती है। एक ही त्रुटि के साथ% 2F% 2FsomeSite.com

:

returnURL = http:

तो, मैं करने के लिए इसे बदल दिया है।

मैंने उसी परिणाम के साथ टोड डिटचेन्दोर्फ़ के HTTP क्लाइंट के साथ इसे दो बार भी चेक किया है।

मुझे पता है कि मुझे यह गलत एन्कोडिंग करना चाहिए क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं?

धन्यवाद कोरी

** अद्यतन: जो लोग जवाब के लिए धन्यवाद। मैं अपने एनवीपी मूल्यों में एक एम्पर्सेंड चूक गया। तो निश्चित रूप से, जैसे ही मैंने इसे ठीक किया, सबकुछ ठीक था। मुझे संदेह था कि पोस्ट के शरीर में यूआरएल का एन्कोडिंग गलत था। मैं ASIHTTPRequest ढांचे का उपयोग नहीं कर रहा हूं, लेकिन इससे मुझे समस्या का निवारण करने में मदद मिली (मुझे जो चाहिए वह ओवरकिल)। **

उत्तर

15

पैदा करने और सिंक्रोनस और एसिंक्रोनस htttp अनुरोध भेजने के लिए बेन Copsey के ASIHTTPRequest ढांचे के उपयोग पर विचार (पोस्ट और प्राप्त):

ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:@"http://someSite.com"] autorelease]; 
[request setPostValue:@"myValue1" forKey:@"myFormField1"]; 
[request setPostValue:@"myValue2" forKey:@"myFormField2"]; 
// etc. 
[request start]; 
NSError *error = [request error]; 
if (!error) 
    NSString *response = [request responseString]; 

उनका ढांचा एक विशाल समय बचाने है।

+1

ASIHttpRequest कमाल भयानक है !! – bentford

4

यह आपकी समस्या का हल है, तो मुझे पता नहीं है, लेकिन

[parameterString length] 

अक्सर

[parameterString dataUsingEncoding:NSUTF8StringEncoding] 

की लंबाई के बराबर नहीं हो क्योंकि UTF8 बाइट्स की अलग अलग संख्या के साथ पात्रों को कूटबद्ध कर रहा है।

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