2013-07-01 103 views
2

嗨,大家好,我正面临着Oauth和twitter api ver1.1的问题。当我的应用程序发布到其他网站时,我的应用程序会发布推文到twitter。但是当帖子正文包含感叹号('!')时,我会收到未经授权的twitter 401错误。我搜索谷歌,发现它可能与Oauth有关。有人说'!'必须编码为'%21'。我尝试过,但是当我鸣叫'!'时到Twitter,我只有'%21',但不是'!'本身。任何人都可以给我一些提示,我如何编码'!'是否正确?[twitter error 401]我应该怎样处理感叹号?

+0

作为补充信息,我使用MGTwitterEngine编码您的鸣叫。 – Sabbath

+0

尝试编码“!”到! – torip3ng

+1

嗨@ torip3ng,谢谢你的回答,但这一次我得到'&#33',仍然不是'!'。 – Sabbath

回答

1

必须与该类别

#import "NSString+URLEncoding.h" 
@implementation NSString (OAURLEncodingAdditions) 

- (NSString *)URLEncodedString 
{ 
    NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                     (CFStringRef)self, 
                     NULL, 
                     CFSTR("!*'();:@&=+$,/?%#[]"), 
                     kCFStringEncodingUTF8); 
    [result autorelease]; 
    return result; 
} 

- (NSString*)URLDecodedString 
{ 
    NSString *result = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, 
                         (CFStringRef)self, 
                         CFSTR(""), 
                         kCFStringEncodingUTF8); 
    [result autorelease]; 
    return result; 
} 

@end 
+0

嗨,@myke。谢谢你的答案。我在类'OAMutableURLRequest'中找到了URLEncodedString:方法,而在我的项目中找不到URLDecodedString:。 URLEncodedString:被其他一些方法使用。你能告诉我应该在哪里使用URLDecodedString:? – Sabbath

+0

我不知道;)在我的Twitter客户端中,我不使用这种方法 – mischa

+0

嗨,@myke,我解决了这个问题。谢谢你的帮助。 – Sabbath