Showing
2 changed files
with
18 additions
and
4 deletions
@@ -26,6 +26,9 @@ typedef enum _ASIPostFormat { | @@ -26,6 +26,9 @@ typedef enum _ASIPostFormat { | ||
26 | ASIPostFormat postFormat; | 26 | ASIPostFormat postFormat; |
27 | } | 27 | } |
28 | 28 | ||
29 | +#pragma mark utilities | ||
30 | ++ (NSString*) encodeURL:(CFStringRef) string; | ||
31 | + | ||
29 | #pragma mark setup request | 32 | #pragma mark setup request |
30 | 33 | ||
31 | // Add a POST variable to the request | 34 | // Add a POST variable to the request |
@@ -19,6 +19,17 @@ | @@ -19,6 +19,17 @@ | ||
19 | 19 | ||
20 | @implementation ASIFormDataRequest | 20 | @implementation ASIFormDataRequest |
21 | 21 | ||
22 | +#pragma mark utilities | ||
23 | ++ (NSString*) encodeURL:(CFStringRef)string | ||
24 | +{ | ||
25 | + CFStringRef result = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, | ||
26 | + string, | ||
27 | + NULL, | ||
28 | + CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), | ||
29 | + kCFStringEncodingUTF8); | ||
30 | + return [(NSString*) result autorelease]; | ||
31 | +} | ||
32 | + | ||
22 | #pragma mark init / dealloc | 33 | #pragma mark init / dealloc |
23 | 34 | ||
24 | + (id)requestWithURL:(NSURL *)newURL | 35 | + (id)requestWithURL:(NSURL *)newURL |
@@ -126,7 +137,7 @@ | @@ -126,7 +137,7 @@ | ||
126 | // Set your own boundary string only if really obsessive. We don't bother to check if post data contains the boundary, since it's pretty unlikely that it does. | 137 | // Set your own boundary string only if really obsessive. We don't bother to check if post data contains the boundary, since it's pretty unlikely that it does. |
127 | NSString *stringBoundary = @"0xKhTmLbOuNdArY"; | 138 | NSString *stringBoundary = @"0xKhTmLbOuNdArY"; |
128 | 139 | ||
129 | - [self addRequestHeader:@"Content-Type" value:[NSString stringWithFormat:@"multipart/form-data; boundary=%@",stringBoundary]]; | 140 | + [self addRequestHeader:@"Content-Type" value:[NSString stringWithFormat:@"multipart/form-data; charset=UTF-8; boundary=%@",stringBoundary]]; |
130 | 141 | ||
131 | [self appendPostData:[[NSString stringWithFormat:@"--%@\r\n",stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; | 142 | [self appendPostData:[[NSString stringWithFormat:@"--%@\r\n",stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]]; |
132 | 143 | ||
@@ -154,7 +165,7 @@ | @@ -154,7 +165,7 @@ | ||
154 | NSString *fileName = [fileInfo objectForKey:@"fileName"]; | 165 | NSString *fileName = [fileInfo objectForKey:@"fileName"]; |
155 | 166 | ||
156 | [self appendPostData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", key, fileName] dataUsingEncoding:NSUTF8StringEncoding]]; | 167 | [self appendPostData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n", key, fileName] dataUsingEncoding:NSUTF8StringEncoding]]; |
157 | - [self appendPostData:[[NSString stringWithFormat:@"Content-Type: %@\r\n\r\n", contentType] dataUsingEncoding:NSUTF8StringEncoding]]; | 168 | + [self appendPostData:[[NSString stringWithFormat:@"Content-Type: %@; charset=UTF-8\r\n\r\n", contentType] dataUsingEncoding:NSUTF8StringEncoding]]; |
158 | 169 | ||
159 | if ([file isKindOfClass:[NSString class]]) { | 170 | if ([file isKindOfClass:[NSString class]]) { |
160 | [self appendPostDataFromFile:file]; | 171 | [self appendPostDataFromFile:file]; |
@@ -181,7 +192,7 @@ | @@ -181,7 +192,7 @@ | ||
181 | return; | 192 | return; |
182 | } | 193 | } |
183 | 194 | ||
184 | - [self addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"]; | 195 | + [self addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded; charset=UTF-8"]; |
185 | 196 | ||
186 | 197 | ||
187 | NSEnumerator *e = [[self postData] keyEnumerator]; | 198 | NSEnumerator *e = [[self postData] keyEnumerator]; |
@@ -189,7 +200,7 @@ | @@ -189,7 +200,7 @@ | ||
189 | int i=0; | 200 | int i=0; |
190 | int count = [[self postData] count]-1; | 201 | int count = [[self postData] count]-1; |
191 | while (key = [e nextObject]) { | 202 | while (key = [e nextObject]) { |
192 | - NSString *data = [NSString stringWithFormat:@"%@=%@%@",[key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[[[self postData] objectForKey:key] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],(i<count ? @"&" : @"")]; | 203 | + NSString *data = [NSString stringWithFormat:@"%@=%@%@", [ASIFormDataRequest encodeURL:(CFStringRef)key], [ASIFormDataRequest encodeURL:(CFStringRef)[[self postData] objectForKey:key]],(i<count ? @"&" : @"")]; |
193 | [self appendPostData:[data dataUsingEncoding:NSUTF8StringEncoding]]; | 204 | [self appendPostData:[data dataUsingEncoding:NSUTF8StringEncoding]]; |
194 | i++; | 205 | i++; |
195 | } | 206 | } |
-
Please register or login to post a comment