切换到AFNetworking 2.0时,AFHTTPClient已被AFHTTPRequestOperationManager/AFHTTPSessionManager替换(如迁移指南中所述).我在使用AFHTTPSessionManager时遇到的第一个问题是如何在故障块中检索响应的主体?
这是一个例子:
[self.sessionManager POST:[endpoint absoluteString] parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
// How to get the status code?
} failure:^(NSURLSessionDataTask *task, NSError *error) {
// How to get the status code? response?
}];
Run Code Online (Sandbox Code Playgroud)
在成功块中,我想检索响应的状态代码.在故障块中,我想检索响应的状态代码和内容(在这种情况下,这是描述服务器端错误的JSON).
NSURLSessionDataTask具有NSURLResponse类型的响应属性,该属性没有statusCode字段.目前我能够像这样检索statusCode:
[self.sessionManager POST:[endpoint absoluteString] parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
// How to get the status code?
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
DDLogError(@"Response statusCode: %i", response.statusCode);
}];
Run Code Online (Sandbox Code Playgroud)
但这看起来很丑陋.而且仍然无法想象响应的身体.
有什么建议?
由于AFNetworking 2.0在AFHTTPClient已经消失的青睐两位经理的:AFHTTPRequestOperationManager和AFHTTPSessionManager.迁移指南几乎没有说明每种情况下最好使用的情况.据我所知,与RESTful的基本交互JSON API可以分别使用它们中的每一个来实现.
什么是最合适的情况使用RequestOperationManager或SessionManager?
objective-c afhttpclient afhttprequestoperation afnetworking-2
我目前遇到了构建应用程序结构及其测试基础架构的问题.
这是布局的简要概述
<GOROOT>/src/myapp/controllers/
<GOROOT>/src/myapp/controllers/account.go
...
<GOROOT>/src/myapp/models/
<GOROOT>/src/myapp/models/account.go
<GOROOT>/src/myapp/models/account_test.go
...
<GOROOT>/src/myapp/components/
<GOROOT>/src/myapp/components/comp1/
<GOROOT>/src/myapp/components/comp1/impl.go
<GOROOT>/src/myapp/components/comp1/impl_test.go
<GOROOT>/src/myapp/components/
...
<GOROOT>/src/myapp/testutil/
<GOROOT>/src/myapp/testutil/database.go
<GOROOT>/src/myapp/testutil/models.go
...
Run Code Online (Sandbox Code Playgroud)
问题1
File myapp/testutil/models.go包含models/*_test.go测试中使用的一些util函数.util函数实际上使用包myapp/models数据结构和函数.因此我们有一个导入周期:account_test.go进口testutil包,进而导入models.
这里唯一明确的解决方案就是testutil/models.go在models包装内部保持相同的包装test_utils.go,这对我来说似乎有些笨拙.在这种情况下,最好的解决办法是什么?
问题2
testutil包有一些初始化comp1(假设它是第三方服务的客户端).当我们运行测试时comp1/impl_test.go,testutil导入包,并导入comp1包,因为它负责组件的初始化.相同的循环导入地狱.将初始化移动到测试用例中的每个位置似乎是代码的重复.仍在寻找一些优雅的解决方案......
我正在使用README文件(来自AFNetworking 2.0页面)中的一个简单示例来下载图像.对于直接从我的web服务器提供的图像,一切正常.但是对于那些位于S3上的人来说,web服务器返回302重定向以下错误:
Error Domain=NSURLErrorDomain Code=-999 "cancelled"
Run Code Online (Sandbox Code Playgroud)
当我尝试直接从S3下载图像(使用相同的代码)(省略重定向)时,我收到相同的错误.
我用wget检查了实际图像的可用性.该图像是公开的(https://youguide.s3.amazonaws.com/icons/user_96x96.png).
有人遇到过类似的问题吗?
我正在探索一种在 Argo 工作流程中读取 K8S 资源的简单方法。当前文档主要关注有条件的创建/补丁(https://argoproj.github.io/argo/examples/#kubernetes-resources),而我很好奇是否可以执行“action: get”,额外资源状态(或完整资源)的一部分,并将其作为工件或结果输出传递给下游。有任何想法吗?
objective-c ×2
afhttpclient ×1
amazon-s3 ×1
architecture ×1
go ×1
https ×1
kubernetes ×1
testing ×1
web ×1