Con*_*son 3 objective-c nsxmlparser ios
目前我有一个字符串,我想POST到URL.
除非遇到像"&"和"?"这样的特殊字符,否则它的效果非常好.它不会发布之后发布的任何数据.例如,如果我有一个字符串"我是什么东西?",它只会POST"我是某种东西".至于"?",它会在发布后转换为"2".
reason = 'What see see! Are you sure'2''
Run Code Online (Sandbox Code Playgroud)
我很确定它必须与编码有关,因为我可以看到"我是什么东西?" 因为它就在我设置编码之前:
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)
我也试过下面的编码没有成功:
NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSData *postData = [post dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSData *postData = [post dataUsingEncoding:NSISOLatin1StringEncoding];
Run Code Online (Sandbox Code Playgroud)
以下是我从postData开始的代码:
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding];
//NSLog(@"PostData: %@", postData);
NSString *check = [[NSString alloc] initWithData:postData encoding:NSASCIIStringEncoding];
NSLog(@"check string = %@", check);
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:strURLQueryString]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody:postData];
NSURLResponse *response;
NSError *err=nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
NSString *strResponse = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"Response: %@", strResponse);
if(err!=nil) {
NSLog(@"Error: %@", [err description]);
}
Run Code Online (Sandbox Code Playgroud)
请协助.感谢您的帮助.
那里可能有一个更好的答案,但这个类扩展已经为我工作了一段时间.我通过查看几个帖子拼凑了%escapes ...
// NSString+URLEncoding.h
@interface NSString (NSString_URLEncoding)
- (NSString *)urlEncodeUsingEncoding:(CFStringEncoding)encoding;
- (NSString *)urlEncode;
@end
// NSString+URLEncoding.m
@implementation NSString (NSString_URLEncoding)
- (NSString *)urlEncodeUsingEncoding:(CFStringEncoding)encoding {
return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(__bridge CFStringRef)self,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
encoding));
}
- (NSString *)urlEncode {
return [self urlEncodeUsingEncoding:kCFStringEncodingUTF8];
}
Run Code Online (Sandbox Code Playgroud)
然后在somer其他类中发送一个字符串......
// SomeOtherClass.m
#import "NSString+URLEncoding.h"
NSString *encodedString = [@"This & this? are 'challenging' to !% encode" urlEncode];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4888 次 |
| 最近记录: |