我使用ASIHTTPRequest發送形式是這樣的:ASIHTTPRequest:在編碼後的數據
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:foo forKey:@"post_var"];
如何設置NSString的foo的編碼?
該網站接收表單數據預計ISOLatin1
我使用ASIHTTPRequest發送形式是這樣的:ASIHTTPRequest:在編碼後的數據
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:foo forKey:@"post_var"];
如何設置NSString的foo的編碼?
該網站接收表單數據預計ISOLatin1
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];
編輯值:我不知道爲什麼上面是行不通的。我想我應該嘗試一下。但看源ASIHTTPRequest的-setPostValue:forKey:
方法看起來像它需要的任何NSObject
子類的崗位價值:
- (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"];
ASIFormDataRequests允許您設置發送到服務器這樣的內容的編碼:
[request setStringEncoding:NSISOLatin1StringEncoding].
默認是NSUTF8StringEncoding。
重點是我已經有了一個UTF8編碼的NSString。以下示例: c_Foo = [foo UTF8String]; ...... 這不起作用。我沒有得到ISOLatin1編碼的字符串:-( – Jorge 2009-09-26 22:50:43
這樣做,我得到這樣的值:<6275656e f3212121 2121>在窗體接收器。 – Jorge 2009-09-27 08:00:20