2009-09-26 1 views
1

Я использую ASIHTTPRequest, чтобы отправить через форму таким образом:ASIHTTPRequest: Кодирование в почтовых данных

ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease]; 
[request setPostValue:foo forKey:@"post_var"]; 

Как я могу установить кодировку NSString обув ??

Веб получения данных формы ожидает значение в ISOLatin1

ответ

0
const char *_cFoo = "bar"; 
NSString *_foo = [[NSString alloc] initWithCString:_cFoo encoding:NSISOLatin1StringEncoding]; 
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease]; 
[request setPostValue:_foo forKey:@"post_var"]; 
// ... 
[request trigger]; 
[_foo release]; 

EDIT: Я не знаю, почему выше не будет работать. Думаю, я должен попробовать. Но, глядя на источник ASIHTTPRequest, метод -setPostValue:forKey: выглядит, как он принимает любой NSObject подкласс для значения POST:

- (void)setPostValue:(id <NSObject>)value forKey:(NSString *)key 
{ 
    if (![self postData]) { 
     [self setPostData:[NSMutableDictionary dictionary]]; 
    } 
    [[self postData] setValue:[value description] forKey:key]; 
    [self setRequestMethod:@"POST"]; 
} 

Возможно преобразовать NSString в строку C и использовать его NSData представление в качестве значения переменной POST:

NSString *_foo = @"bar"; 
const char *_cFoo = [_foo cStringUsingEncoding:NSISOLatin1StringEncoding]; 
NSData *_cFooData = [NSData dataWithBytes:_cFoo length:strlen(_cFoo)]; 
[request setPostValue:_cFooData forKey:@"post_var"]; 
+0

Суть в том, что у меня уже есть USSF8 кодированный NSString. Следуйте вашему примеру: c_Foo = [foo UTF8String]; ...... Это не работает. Я не получаю кодированные строки ISOLatin1 :-( – Jorge

+0

Выполняя это, получаю такие значения: <6275656e f3212121 2121> в форме приемника. – Jorge

3

ASIFormDataRequests позволяют установить кодировку содержимого отправляется на сервер, как это:

[request setStringEncoding:NSISOLatin1StringEncoding]. 

По умолчанию используется NSUTF8StringEncoding.

 Смежные вопросы

  • Нет связанных вопросов^_^