标签: afnetworking-2

AFNetworking 2.0:当收到302到AWS S3时,NSURLSessionDownloadTask被取消

我正在使用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).

有人遇到过类似的问题吗?

https amazon-s3 afnetworking-2

3
推荐指数
1
解决办法
3558
查看次数

AFNetworking 2.0 - 当应用程序在后台时,请求不会成功阻止

  • 我正在为我的项目使用AFNetworking 2.0.我只是向服务器发送一些请求并且服务器为我返回一些JSON,这很简单.
  • 为了测试它,我在AFNetworking POST方法的成功块中标记了一些调试标记.问题是当应用程序位于前台并且应用程序从服务器接收响应时,xCode可以停止在成功和失败块中的调试标记处.但是当我提出请求然后将应用程序带到后台(按Home键)时,调试永远不会进入块.
  • 看起来他们在应用程序处于后台时暂停了,因为当应用程序再次处于前台时,调试会立即进入块状态并得到响应.

我错过了什么吗?因为我希望应用程序接收响应并做一些事情,即使它在后台.这是我在我的应用中使用的内容:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = /*generate the parameters*/;
NSURL *filePath = [NSURL fileURLWithPath:@"imageName.png"];
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);

//debug here
//Told the app to stop the Loading View, save response to DB

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);

//debug here
//Told the app to stop the Loading View and try again sometimes

}];
Run Code Online (Sandbox Code Playgroud)

ios afnetworking-2

3
推荐指数
1
解决办法
859
查看次数

AFnetworking 2.2.0在服务器问题上传图像

之所以要求你这样做是因为我对params感到困惑.

据我所知,有一种方法可以使用多部分请求.

这种方式为我们提供了两个概念,因为我理解从文件上传,可以存储在Document目录中或使用NSData对象.

从文件上传:

所以我将test.jpg保存到文档目录中.然后我让NSURL实例在多部分请求中使用它.下面的代码显示了我如何创建NSURL实例:

NSString *fileName = @"test.jpg";
NSString *folderPath = [documentsDirectory stringByAppendingPathComponent:fileName];
NSURL *filePath = [NSURL fileURLWithPath:folderPath];
Run Code Online (Sandbox Code Playgroud)

当我打印文件路径时:

file:///Users/mac/Library/Application%20Support/iPhone%20Simulator/7.0.3/Applications/F732FCF6-EAEE-4E81-A88B-76ADB75EDFD1/Documents/test.jpg
Run Code Online (Sandbox Code Playgroud)

然后我设置我的参数并使用formData附加我的文件,如下所示:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": @"bar"};
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];
[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:filePath name:@"image" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)

它是否正确?或者我可能会错过一些东西因为回应不成功?

第二个概念 - 直接处理数据:

[formData appendPartWithFileData:imageData name:@"image" fileName:@"test.jpg" mimeType:@"image/jpeg"];
Run Code Online (Sandbox Code Playgroud)

但当应用程序调用这行代码时,我收到错误:

*** Terminating app due …
Run Code Online (Sandbox Code Playgroud)

ios afnetworking afnetworking-2

3
推荐指数
1
解决办法
8079
查看次数

AFNetworking完成块等到完成

我正在使用AFNetworking进行POST请求.我需要等到完成块完成才能返回数据,我遇到了问题.

我有一个解决方案,直到我切换到AFNetworking:

int i = 0;

while (!done)
{
    [NSRunLoop.currentRunLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
    i++;

    NSLog(@"While Loop:%i", i);

    if (i == 149) //request timed out
        done = YES;
}
Run Code Online (Sandbox Code Playgroud)

现在,解决方案偶尔会起作用.有时它只用NSLog(@"While Loop:%i", i);1或2记录完成,但有时它会记录到149并超时.似乎NSRunLoop有时会在不同的线程中运行,但有时会在阻止我的请求的同一线程上运行.

这是我目前的代码:

- (id)postRequestWithBaseURLString:(NSString *)baseURLString function:(NSString *)function parameters:(NSDictionary *)parameters
{
    if (baseURLString)
        function = [baseURLString stringByAppendingString:function];

    __block BOOL done = NO;
    __block id returnObject = nil;

    [self.manager POST:function parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSLog(@"Success: %@", responseObject);

         done = YES;
         returnObject = responseObject;
     }

          failure:^(AFHTTPRequestOperation *operation, NSError …
Run Code Online (Sandbox Code Playgroud)

multithreading objective-c ios afnetworking afnetworking-2

3
推荐指数
1
解决办法
2854
查看次数

AFHTTPSessionManager发送GET请求json格式

我正在尝试使用AFHTTPSessionManager向Web服务发送请求

这是我的问题:我想发送带有JSON格式参数的URL GET请求.像这样: http://api.mysite.com/v2/json/search parameter = {"api_key":"YOUR_API_ KEY","查询":{"perpage":50}}

我已经将AFHTTPSessionManager子类化了.这是我的代码的样子:

    + (MyAPIClient *)sharedClient {
        static MyAPIClient *_sharedClient = nil;
        static dispatch_once_t oncePredicate;
        dispatch_once(&oncePredicate, ^{
            _sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:kBaseURLString]];
        });
        return _sharedClient;
    }
Run Code Online (Sandbox Code Playgroud)

和初始化者:

- (instancetype)initWithBaseURL:(NSURL *)url {

    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }

    self.responseSerializer = [AFJSONResponseSerializer serializer];
    self.requestSerializer = [AFJSONRequestSerializer serializer];
    return self;
}
Run Code Online (Sandbox Code Playgroud)

所以这就是我做的方式:

- (void)sendMyQueryWithSuccess:
       (void(^)(NSURLSessionDataTask *task, id responseObject))success
        andFailure:(void(^)(NSURLSessionDataTask *task, NSError *error))failure{


        NSDictionary *params = @{@"api_key" : kAPIKey,
                                @"query": @{@"perpage": …
Run Code Online (Sandbox Code Playgroud)

json get ios ios7 afnetworking-2

3
推荐指数
1
解决办法
5964
查看次数

如何检查NSDictionary键是否为NULL

我正在尝试检查next_max_id我的JSON响应字典中的密钥是否存在对象.我尝试了以下方法来检查:

  • if ([[pagination objectForKey:@"next_max_id"] isKindOfClass:[NSNull class]]) ...
  • if ([pagination objectForKey:@"next_max_id"] == [NSNull class]) ...
  • if ([pagination objectForKey:@"next_max_id"]) ...

但是,当分页字典为空即ie(pagination = {};)时,我收到以下错误消息:

-[NSNull objectForKey:]: unrecognized selector sent to instance ...
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull objectForKey:]: unrecognized selector sent to instance ...
Run Code Online (Sandbox Code Playgroud)

如何在没有崩溃的情况下检查对象或密钥是否存在?

更新:当密钥next_max_id存在于内部时pagination,JSON响应将是这样的

"pagination": {
    "next_url": "https://api.instagram.com/v1/tags/puppy/media/recent?access_token=fb2e77d.47a0479900504cb3ab4a1f626d174d2d&max_id=13872296",
    "next_max_id": "13872296"
}
Run Code Online (Sandbox Code Playgroud)

objective-c ios afnetworking-2

3
推荐指数
1
解决办法
1万
查看次数

AFNetworking 2 - 图像上传 - 请求失败:不支持的媒体类型(415)

我知道这个问题已被多次回答,但我没有运气就尝试了所有答案.我不认为我做了一些根本错误的事情,但这里肯定是错的.

我使用以下代码将PNG文件上传到tinypng.com.据我所知,上传本身有效,但收到错误消息:请求失败:不支持的媒体类型(415)

我使用的图像以JPEG格式加载,然后调整大小并转换为PNG格式.保存的文件很好.现在我想在将它们保存到光盘之前将它们发送到TinyPNG API.

如果有人有任何想法错误或有这方面的经验,请告诉我.提前致谢!

详细的错误消息

Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: unsupported media type (415)" 
UserInfo=0x6000000e4900 {
    com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x600000220200> { URL: https://api.tinypng.com/shrink } 
    { 
        status code: 415, headers {
            Connection = "keep-alive";
            "Content-Length" = 77;
            "Content-Type" = "application/json; charset=utf-8";
            Date = "Tue, 16 Dec 2014 20:24:16 GMT";
            Server = "Apache/2";
            "Strict-Transport-Security" = "max-age=31536000";
            "X-Powered-By" = "Voormedia (voormedia.com/jobs)";
        } 
    }, 
    NSErrorFailingURLKey=https://api.tinypng.com/shrink,
    com.alamofire.serialization.response.error.data=<7b226572 726f7222 3a224261 64536967 6e617475 
    7265222c 226d6573 73616765 223a2244 6f657320 6e6f7420 61707065 61722074 6f206265 20612050 
    4e47206f 72204a50 …
Run Code Online (Sandbox Code Playgroud)

macos objective-c nsimage afnetworking-2

3
推荐指数
1
解决办法
3531
查看次数

ld:找不到 AFNetworking 框架

尝试使用 Xcode 7.1.1 从终端编译 iOS 项目时出现链接错误:

xcodebuild -project MyProject.xcodeproj -configuration 调试 -target MyProject 构建

结果我收到下一个错误:

ld:找不到 AFNetworking 框架

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

这是我的 pod 文件:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target "MyProject" do
  pod "AFNetworking", "~> 2.0"
  pod 'GoogleMaps'
  pod 'MONActivityIndicatorView'
  pod 'NYXImagesKit'
  pod 'MagicalRecord'
  pod 'FBSDKCoreKit'
  pod 'FBSDKShareKit'
  pod 'FBSDKLoginKit'
  pod 'Countly'
end

xcodeproj 'MyProject'
Run Code Online (Sandbox Code Playgroud)

我也尝试添加 link_with 但得到相同的错误。如何解决上述问题?

xcode ios afnetworking cocoapods afnetworking-2

3
推荐指数
1
解决办法
5516
查看次数

如何在AFNetworking 2.0中执行简单的form-urlencoded POST请求?

如何在AFNetworking 2.0中复制此NSURLConnection代码?

NSString *post = @"key=xxx";
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://test.com/"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];

NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn start];
Run Code Online (Sandbox Code Playgroud)

networking ios afnetworking-2

2
推荐指数
2
解决办法
9304
查看次数

通过cocoapods添加AFNetworking - AFHTTPClient.h/m不包括在内

当我使用cocoapods将AFNetworking添加到我的工作区时,一切似乎都已到位,但我无法在我的代码中实例化任何AFHTTPClient实例.文件:AFHTTPClient.h和.m不存在于AFNetworking层次结构中的任何位置.

目前,我的Podfile看起来像这样:

platform :ios, '7.0'
pod 'AFNetworking', '~> 2.0'
pod 'Parse',        '1.2.17'
Run Code Online (Sandbox Code Playgroud)

我的CLI pod update命令从终端运行正常,如下所示:

nmaster >> pod update
Analyzing dependencies
Downloading dependencies
Using AFNetworking (2.0.3)
Using Facebook-iOS-SDK (3.11.0)
Using Parse (1.2.17)
Generating Pods project
Integrating client project
Run Code Online (Sandbox Code Playgroud)

我在代码中看到的错误如下所示:

代码段

我看过一些帖子提到HEADER SEARCH PATH不足,但我已经确认文件本身不存在.AFHTTPClient已被弃用吗?我确实在Ray W.的AFHTTPClient.h和.m文件的教程中找到了一个副本,并尝试将它们拖放到我的项目中,但这导致了重复的引用和其他问题.

任何人都有任何想法我应该在哪里解决这个问题?

谢谢,菲尔

cocoapods ios7 afnetworking-2

2
推荐指数
1
解决办法
6424
查看次数