This question already has answers here:
Add HTTP Header to NSURLRequest
(3个答案)
6年前关闭。
我是使用HTTP的新手,因为我过去一直只是前端开发人员,但是根据我目前的合同,系统要求我使用REST API从服务器提取数据。我需要使用API密钥和API用户名在HTTP标头中对自己进行身份验证,并要求我根据API文档在“令牌”标头中进行身份验证。
在格式化
这是我要参考的API文档的特定部分:
REST-APIUser-令牌
与API相关的APIKey和APIUserName
帐户必须以Base64String格式设置为“ REST-APIUser--Token”
在令牌头中,如下所示:
Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format(“ {0}:{1}”,APIKey,APIUserName)))
哪里,
APIKey –与API帐户关联的唯一密钥
APIUserName –与API帐户关联的UserName
APP用户ID
必须将当前登录用户的ID设置为“ APP-User-ID”
标头中的Base64String格式。
Convert.ToBase64String(Encoding.UTF8.GetBytes(AppUserID))
哪里,
AppUserID –与API应用程序用户关联的用户ID
我拥有一个{APIKey},{APIUserName}和一个{AppUserID}。
请注意,如果您的意思是HTTPS,则连接是需要身份验证的连接,而不是请求。尽管您似乎不使用HTTPS。
NSString * AppUserId = Convert.ToBase64String(Encoding.UTF8.GetBytes(AppUserID))//或者无论您需要什么功能,它看起来都不像Objective-C。
查看How to Base64 encoding on the iPhone或类似的base64。这篇文章建议https://github.com/nicklockwood/Base64/
如果使用该库,则需要类似函数的内容
并将其传递给您的API文档中所描述的信息。由于我们没有您的全部信息,因此我们不能为您提供更多帮助。
例如,您可能想要:
只需按照那里的API来以相同的方式做令牌(以相同的方式生成令牌)。
(3个答案)
6年前关闭。
我是使用HTTP的新手,因为我过去一直只是前端开发人员,但是根据我目前的合同,系统要求我使用REST API从服务器提取数据。我需要使用API密钥和API用户名在HTTP标头中对自己进行身份验证,并要求我根据API文档在“令牌”标头中进行身份验证。
在格式化
NSURLRequest
以完成此任务方面,我可以获得任何帮助吗?我在这里完全迷路了。这是我要参考的API文档的特定部分:
REST-APIUser-令牌
与API相关的APIKey和APIUserName
帐户必须以Base64String格式设置为“ REST-APIUser--Token”
在令牌头中,如下所示:
Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format(“ {0}:{1}”,APIKey,APIUserName)))
哪里,
APIKey –与API帐户关联的唯一密钥
APIUserName –与API帐户关联的UserName
APP用户ID
必须将当前登录用户的ID设置为“ APP-User-ID”
标头中的Base64String格式。
Convert.ToBase64String(Encoding.UTF8.GetBytes(AppUserID))
哪里,
AppUserID –与API应用程序用户关联的用户ID
我拥有一个{APIKey},{APIUserName}和一个{AppUserID}。
最佳答案
见Add HTTP Header to NSURLRequest
/* Create request variable containing our immutable request
* This could also be a paramter of your method */
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]];
// Create a mutable copy of the immutable request and add more headers
NSMutableURLRequest *mutableRequest = [request mutableCopy];
[mutableRequest addValue:@"__usersKey__" forHTTPHeaderField:@"token"];
// Now set our request variable with an (immutable) copy of the altered request
request = [mutableRequest copy];
// Log the output to make sure our new headers are there
NSLog(@"%@", request.allHTTPHeaderFields);
请注意,如果您的意思是HTTPS,则连接是需要身份验证的连接,而不是请求。尽管您似乎不使用HTTPS。
NSString * AppUserId = Convert.ToBase64String(Encoding.UTF8.GetBytes(AppUserID))//或者无论您需要什么功能,它看起来都不像Objective-C。
查看How to Base64 encoding on the iPhone或类似的base64。这篇文章建议https://github.com/nicklockwood/Base64/
如果使用该库,则需要类似函数的内容
- (NSString *)base64EncodedString;
并将其传递给您的API文档中所描述的信息。由于我们没有您的全部信息,因此我们不能为您提供更多帮助。
例如,您可能想要:
NSString *token = [NSString stringWithFormat@"%@:%@",APIKey,APIUserName]
NSString *token64 = [token base64EncodedString]; //Assuming that's how you call the library's function. I have never used it so I don't know if it modifies NSString or what. You can always write a function for this part.
[mutableRequest addValue:@"APIUser--Token" forHTTPHeaderField:token64]; //Not sure what the API says the value should be, formatting isn't clear
//Follow the same lines for NSString *AppUserId
[mutableRequest addValue:@"APP-User-ID" forHTTPHeaderField:AppUserId];
只需按照那里的API来以相同的方式做令牌(以相同的方式生成令牌)。
关于ios - 如何配置HTTP header 进行身份验证? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20531658/
10-10 17:28