2013-07-03 75 views
1

我正在擴展現有應用程序的功能,這些應用程序是用來顯示Big Commerce商店中的內容的。基本上,我希望應用程序能夠檢查用戶在iPhone上輸入的電子郵件地址是否存在於客戶列表中,然後基於此執行操作。我有一個API Key和Call方法來獲取客戶列表,但我不確定如何在iOS上執行此操作。有人能給我一些關於我需要做什麼來調用它的指針嗎?BigCommerce使用API​​在iOS中獲取客戶電子郵件

更新:我已用下面的代碼到目前爲止:

-(IBAction)gettingcustomers { 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"mystoreserver.customers.json"] 
                  cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData 
                 timeoutInterval:10]; 

    [request setHTTPMethod: @"GET"]; 

    NSError *requestError; 
    NSURLResponse *urlResponse = nil; 


    NSData *response1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError]; 
    NSLog(@"%@", requestError); 
} 

日誌中的錯誤顯示:

Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn’t be completed. (NSURLErrorDomain error -1012.)" UserInfo=0xa7d12e0 {NSErrorFailingURLKey=mystoreserver.customers.json, NSErrorFailingURLStringKey=mystoreserver.customers.json, NSUnderlyingError=0xa7da430 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1012.)"} 

回答

0

首先,誤差是指kCFURLErrorUserCancelledAuthentication。

有在你的代碼的幾個問題:

  1. 不要調用從主線程同步的網絡請求(!大無賴)由於網絡請求可能需要幾秒鐘一分鐘,它會阻止主線程和UI。

  2. 如果您希望應用程序使用蜂窩連接,請勿設置超時時間短。默認是OK。更好的是,將其設置得非常高,讓用戶取消它(這需要在異步模式下使用NSURLConnection)。

  3. 正確檢查錯誤。基本上,具有指向NSError對象指針作爲最後一個參數的方法表示成功或失敗,其返回值。也就是說,爲了弄清楚是否有錯誤檢查返回值只有!當且僅當返回值指示錯誤時,錯誤參數可能指向一個有意義的NSError對象。

  4. 在客戶端身份驗證的情況下,請求無法進行身份驗證的原因可能是「衆所周知的」憑據存儲區(鑰匙鏈)中沒有憑據。爲了實現一些自定義身份驗證方法,您必須在異步模式下使用NSURLConnection並實現委託方法。也可能有其他原因。

你現在應該做些什麼來完成這項任務,是

  1. 使用NSURLConnection在異步模式 - 你實現委託方法connection:willSendRequestForAuthenticationChallenge:可能需要。

  2. 確保您正確設置了請求的標題,例如設置「Content-Type」頭和可能的「Accept」頭是沒有害處的。

  3. 修復超時(將其保留爲默認值)。

  4. 檢查錯誤是否正確。

  5. 檢查響應,即狀態碼和Content-Type,如果這是您所期望的。

  6. 處理響應數據。

  7. 根據給定的認證挑戰執行connection:willSendRequestForAuthenticationChallenge:

相關問題