2012-09-03 159 views
0

我正在使用ASIFormDataRequest發佈三個值,它們是url,標題和摘要。他們都在模擬器上正常工作,但它不能在設備上工作。這裏是我使用的代碼:ASIFormDataRequest適用於模擬器,但不適用於設備?

- (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]; 
} 

任何人都可以幫助我!

回答

2

首先:ASIRequest不再支持。在某些情況下,它被稱爲是越野車,並且錯誤不會被修復。

第二個,關於你的問題,我看到那裏可能發生錯誤(模擬器和設備之間的差異)兩個地方:

  1. 你肯定對設備[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultUsername"][[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPassword"]設置正確?

  2. 在iOS模擬器上,您無法訪問鑰匙串,因此此設置([loginRequest setUseKeychainPersistence:YES];)也可能導致設備出現問題。

我建議檢查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 
+0

感謝你的幫助,你說ASIRequest不再支持,你建議什麼? – Hamid

+0

正如我所說 - RestKit http://restkit.org/ – Nekto

+0

謝謝,我安裝了RestKit。我的最後一個問題:如果我想編寫代碼來完成我爲ASIRequest所做的同樣的事情,那麼您的RestKit的建議代碼是什麼?我閱讀了很多教程,但我很困惑哪一個最適合我的應用。 – Hamid

相關問題