1

我构建了一个简单的 Django 应用程序,并使用 Django REST Framework 公开了一些 API 端点。我现在正在使用基本身份验证。我已经在命令行上进行了测试,并且一切正常:

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

我正在将 API 交给 IOS 开发人员。在 IOS 应用程序中调用以正确验证和传递 JSON 数据的正确参数是什么?我真的不熟悉IOS开发,所以我不知道如何处理这个问题。

4

4 回答 4

2

当您使用“curl”并使用“-u myuser:mypass”时,您将在 HTTP 授权标头中发送用户名和密码。我不确定如何在 IOS 中专门执行此操作,但我会尝试使用以下网址进行 POST 请求:http://username:password@example.com/

于 2013-07-29T17:41:10.850 回答
1

只需给开发人员 API URL、用户名和密码并告诉他进行基本身份验证,他就会知道该怎么做。

如果他不知道该怎么做,您可以将他指向这个线程:NSURLConnection and Basic HTTP Authentication in iOS

关于 JSON,我认为您可以要求 iOS 开发人员添加到请求标头中'Accept: application/json;',这样也应该没问题。

于 2013-07-29T17:45:25.140 回答
0

我以这种方式解决了身份验证问题。

let authStr:NSString = "username:password"
let authData:NSData = authStr.dataUsingEncoding(NSASCIIStringEncoding)!
let authValue:NSString = "Basic \(authData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength))"
request.setValue(authValue, forHTTPHeaderField: "Authorization")
于 2014-12-08T22:19:24.760 回答
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];
于 2013-07-29T20:53:37.310 回答