2013-07-01 134 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