2013-07-29 21 views
1

我已經構建了一個簡單的Django應用程序,並使用Django REST框架公開了一些API端點。現在我正在使用基本身份驗證。我已經在命令行進行了測試,並且完美地完成了所有工作:使用IOS的Django REST框架API調用。

curl -H 'Accept: application/json; indent=4' -u myuser:mypass http://myapp.herokuapp.com/items/ 

我將API交給IOS開發人員。在iOS應用程序中調用正確的身份驗證和傳遞json數據的正確參數是什麼?我對IOS開發並不熟悉,所以我對如何解決這個問題感到不知所措。

任何幫助非常感謝。

回答

0

我們的IOS開發者實際上使用了一個稍微不同的實現,並且我將他的代碼發佈爲完整性。

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setRequestMethod:@"GET"]; 
[request addRequestHeader:@"Authorization" value:[NSString stringWithFornat:@"Basic %@",  [ASIHTTPRequest base64forData:[[NSString stringWithFormat:@"%@:%@",username,password] dataUsingEncoding:NSUTF8StringEncoding]]]]; 
[request setDidFinishSelector:@selector(requestFinished:)]; 
[request start]; 
+1

自2011年以來,ASIHTTPRequest一直未開展工作,並且與棄用一樣好:http://allseeing-i.com/ASIHTTPRequest/ – neilkimmett

2

當您使用'curl'並使用'-u myuser:mypass'時,您將在HTTP Authorization標頭中發送用戶名和密碼。我不知道如何在IOS中做到這一點,但我會嘗試做一個POST請求與url:http://username:[email protected]/

+0

雅,只需發佈​​到網址。我建議使用MKNetworkKit作爲一個ios網絡庫。沒有理由嘗試寫你自己的。 – JeffRegan

+0

@ M1Reeder NSURLConnection'可以自動處理基本認證 - 或者可以根據相應委託方法中的應用程序輕鬆定製。具有網絡經驗的開發人員應該能夠完成此任務。由於Web服務是REST,因此不能任意僞造HTTP方法。 POST方法僅用於「創建資源」請求(PATCH用於更新)。使用https也是強制性的。 – CouchDeveloper

1

只要給開發人員的API URL,用戶名和密碼,並告訴他做基本認證,他會知道該怎麼做。

如果他不知道該怎麼做,你可以指出他這個線程:NSURLConnection and Basic HTTP Authentication in iOS

關於JSON,我覺得你可以問iOS開發者添加到請求頭'Accept: application/json;'那麼它應該也沒關係。

0

我想通過這種方式驗證問題。

let authStr:NSString = "username:password" 
let authData:NSData = authStr.dataUsingEncoding(NSASCIIStringEncoding)! 
let authValue:NSString = "Basic \(authData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength))" 
request.setValue(authValue, forHTTPHeaderField: "Authorization")