ASIFormDataRequest在模拟器上工作,但不在设备上?
我正在使用ASIFormDataRequest发布三个值,这是一个url,标题和摘要。 他们都在模拟器上正常工作,但它不能在设备上工作。 以下是我正在使用的代码:
- (IBAction)addLinkPressed:(UIButton *)sender { ASIFormDataRequest *loginRequest = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"]]; [loginRequest setRequestMethod:@"POST"]; [loginRequest setPostValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultUsername"] forKey:@"username"]; [loginRequest setPostValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPassword"] forKey:@"password"]; [loginRequest setUseKeychainPersistence:YES]; [loginRequest setDelegate:self]; [loginRequest setDidFinishSelector:@selector(requestLoginFinished:)]; [loginRequest setDidFailSelector:@selector(requestLoginFailed:)]; [loginRequest startSynchronous]; NSString *strURL = @"http://MyWebsite.com/send_link.php"; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:strURL]]; [request setDelegate:self]; [request setPostValue:self.linkField.text forKey:@"url"]; [request setPostValue:self.linkTitleField.text forKey:@"title"]; [request setPostValue:self.linkSummaryField.text forKey:@"summary"]; [request setDidFinishSelector:@selector(requestDone:)]; [request setDidFailSelector:@selector(requestWentWrong:)]; [request startAsynchronous]; }
任何人都可以帮助我!
首先:ASIRequest不再支持。 在某些情况下,它被称为是越野车,并且错误不会被修复。
第二个,关于你的问题,我看到两个地方可能出现错误(模拟器和设备的区别):
-
你确定在设备上
[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultUsername"]
和[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPassword"]
是否设置正确? -
在iOS模拟器上,您无法访问钥匙串,所以此设置(
[loginRequest setUseKeychainPersistence:YES];
)也可能导致设备出现问题。
我build议检查NSUserDefaults
并更好地使用另一个框架,即RestKit
编辑:
使用RestKit的示例:
[RKClient clientWithBaseURLString:@"http://example.com"]; RKClient *rkclient = [RKClient sharedClient]; RKParams *params = [RKParams paramsWithDictionary:[NSDictionary dictionaryWithObjectsAndKeys: username, @"username", password, @"password", nil]]; [rkclient post:@"/profile" params:params delegate:self]; // implement needed delegate methods