我正在努力让这个工作来向我的API发出请求。没有令牌工作,但当我尝试添加额外的标题时,事情变得复杂,对我来说。
首先,结构。 一个名为: APIAsyncTask 的类,它发出请求
一个名为 APIParams 的类,只是一个将参数发送到 APIAsyncTask 类的数据持有者。
一个名为 DatabaseAPI 的类,它构建参数,并将其发送到 APIAsyncTask 类。
DatabaseAPI
func someMethod()
{
let task = APIAsyncTasks()
task.registerCallback { (error, result) -> Void in
print("Finished task, back at DatabaseAPI")
}
let params2 = APIParams(request: .GET, apiPath: "Posts/1", apiToken: "4iTX-56w")
task.APIrequest(params2)
}
APIAsyncTask
这部分用于修复另一个错误,因为经理不是全局的,任务很快就被取消了。
var manager : Manager!
init(authenticatedRequest : Bool, token: String?)
{
manager = Alamofire.Manager()
print("Pre \(manager.session.configuration.HTTPAdditionalHeaders?.count)")
if(authenticatedRequest && token != nil)
{
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders!
defaultHeaders["Authorization"] = "bearer \(token)"
let configuration = Manager.sharedInstance.session.configuration
configuration.HTTPAdditionalHeaders = defaultHeaders
manager = Alamofire.Manager(configuration: configuration)
}
print("Post \(manager.session.configuration.HTTPAdditionalHeaders?.count)")
}
经过一番决策后,归结为这一部分。
private func GetRequest(url: String!,token : String?, completionHandler: (JSON?, NSURLRequest?, NSHTTPURLResponse?, NSError?) -> () ) -> ()
{
print("Begin Get Request")
if(token != nil)//if token is not nil, make authenticated request
{
print("just before request: \(manager.session.configuration.HTTPAdditionalHeaders?.count)")
manager.request(.GET, url, parameters: nil, encoding: .JSON).responseJSON { (request, response, json, error) in
print("Get Request (authenticated), inside alamofire request")
var resultJson : JSON?
if(json != nil)
{
resultJson = JSON(json!)
}
completionHandler(resultJson, request, response, error)
}
}
else
{
//working part without token
因此,现在代码,我在完成时遇到错误:
Mattt本人gives the answer使用Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders
,所以应该没问题......
根据this博客,我怀疑它与多线程有关。或者,因为它是关于CFNetwork的东西,可能是因为我的API不使用SSL?我禁用了NSAppTransportSecurity
我对swift很新,所以我非常感谢你的例子!三江源!
答案 0 :(得分:2)
因此,您的大多数代码看起来都很可靠。
这个错误让我相信CFNetwork很难弄清楚如何为挑战计算保护空间。我还假设你正在获得一个基本的auth挑战,因为你附加了Authorization
标题。
在考虑到这一点的情况下进一步深入了解您的逻辑后,我发现您没有在token
标题内正确地将Authorization
附加到字符串中。您需要执行以下操作。
defaultHeaders["Authorization"] = "bearer \(token!)"
否则,Authorization
标头值将包含Optional(value)
,而不仅仅是value
。
这是我目前唯一可以看到的问题。如果你可以尝试并回顾那将是伟大的。如果这实际上没有解决你的问题,我会相应地更新我的答案。
祝你好运!
答案 1 :(得分:0)
您可以使用.LFB13:
xorl %esi, %esi
movl $1, %ecx
.L2:
movq %rcx, %rax
andl $3735928559, %eax
orq %rax, %rsi
salq $3, %rcx // implicit test for 0
jne .L2
movl $.LC0, %edi
xorl %eax, %eax
jmp printf
和Alamofire 2