如何将 AFHTTPClient、Afnetworking 1.0 迁移到 2.0

2024-04-23

我的问题是我有一个旧代码,我不知道如何更改它。 我有 1 个名为 API (HTTPClient) 的类,我对 2 个方法有问题,因为我不知道如何将它们放入 2.0 中: 这:

-(void)commandWithParams:(NSMutableDictionary*)params onCompletion:(JSONResponseBlock)completionBlock
{
NSMutableURLRequest *apiRequest = 
[self multipartFormRequestWithMethod:@"POST" 
path:kAPIPath 
parameters:params 
constructingBodyWithBlock: ^(id formData) {
//TODO: attach file if needed
}];

AFJSONRequestOperation* operation = [[AFJSONRequestOperation alloc] initWithRequest: apiRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    //success!
    completionBlock(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    //failure :(
    completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];

[operation start];
}


and this:


#pragma mark - init
//intialize the API class with the destination host name

-(API*)init
{
//call super init
self = [super init];

if (self != nil) {
    //initialize the object
    user = nil;

    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];

    // Accept HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
    [self setDefaultHeader:@"Accept" value:@"application/json"];
}

return self;
}

我做了一个名为 Api 的新类,现在(AFHTTPRequestOperationManager)好吗? 我尝试这个,但我不知道

-(API*)init
{//call super init
self = [super init];

//initialize the object
if (self != nil) {
    //initialize the object
    user = nil;
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    AFJSONRequestSerializer *a=[AFJSONRequestSerializer serializer];


    [a setValue:@"Accept" forHTTPHeaderField:@"application/json"];
    [a setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [a setValue:@"content-Type" forHTTPHeaderField:@"text/html"];
    [a setValue : @ "text / html; charset = UTF-8" forHTTPHeaderField : @ "Content-Type" ];

}
return self;
}

-(void)commandWithParams:(NSMutableDictionary*)params onCompletion:(JSONResponseBlock)completionBlock
{

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = params;
NSURL *filePath = [NSURL URLWithString:@"http://162.243.199.147/mujeresquecorren/iReporter/index.php"];
[manager POST:@"api" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
  [formData appendPartWithFileURL:filePath name:@"api" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];
 NSMutableURLRequest *apiRequest = [NSMutableURLRequest requestWithURL:filePath];
AFJSONRequestSerializer *requestSerializer = [AFJSONRequestSerializer serializer];

[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
// operationManagerInstance.requestSerializer = requestSerializer;
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]
initWithRequest:apiRequest];
operation.responseSerializer = [AFJSONResponseSerializer serializer];

manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:@"http://162.243.199.147/mujeresquecorren/iReporter/index.php" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"%@", responseObject);
} failure:nil];
// AFJSONRequestOperation* operation = [[AFJSONRequestOperation alloc] initWithRequest: apiRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//success!
completionBlock(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//failure :(
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];

[operation start];
}

这是错误之一:

错误:错误域=NSURLErrorDomain代码=-1002“不支持的URL”UserInfo=0xa64f980 {NSErrorFailingURLStringKey=api,NSErrorFailingURLKey=api,NSLocalizedDescription=不支持的URL,NSUnderlyingError=0xa782e10“不支持的URL”}

请帮忙,我会为此疯狂的,我需要我的代码在我的应用程序中运行! 多谢!!!!


一切都在错误消息中。 “api”不是有效的 URL。您需要指定绝对 URL,或者使用baseURL, using initWithBaseURL:.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 AFHTTPClient、Afnetworking 1.0 迁移到 2.0 的相关文章

随机推荐

  • 循环遍历复选框并对每个选中或未选中的复选框进行计数

    我遇到了一点问题 这是一个简短的解释 我在标准表格上有 12 个复选框 我需要做的是循环遍历它们中的每一个并了解哪些已检查 哪些未检查 使用它 我可以构建一个字符串 然后将其输入到数据库字段中 这是一个例子 检查1 已检查 检查2 未检查
  • 如何在多个 Twitter Bootstrap 选项卡上只有一个表单?

    如何将多个 Twitter Bootstrap 选项卡合二为一 div class tabbable ul class nav nav tabs li class active a href 1 Tab1 a li li a href 2
  • 有人可以向我解释一下什么时候使用 MapMaker 或 WeakHashMaps 有用吗?

    我读过很多人非常喜欢MapMaker http guava libraries googlecode com svn trunk javadoc com google common collect MapMaker htmlGoogle G
  • 手势识别器和 TableView

    我有一个 UIView 覆盖了 UITableView 的所有内容 UIView 使用手势识别器来控制表格显示的内容 我仍然需要垂直 UITableView 滚动和行点击 我如何将这些从手势识别器传递到桌子上 如果您需要知道单元格的索引路径
  • 为什么使用 $PATH 以及它是什么

    我对编程有点陌生 不是真的 但我仍在学习 我们不是吗 虽然我了解 Java 和 Python 并且了解 C C JS C HTML CSS 等 并且我可以在终端中很好地导航 但我不熟悉终端中的 PATH 是什么 我使用 Linux 终端和
  • 键路径值类型“Int”无法转换为上下文类型“String”

    我试图将包含 KeyPath 和排序顺序类型的多个元组传递给应该进行排序的方法 我有这个方法 extension Array mutating func sort
  • 使用 Python 的内置 .csv 模块进行编写

    请注意 这是一个与已经回答的问题不同的问题如何使用 Python 的内置 csv writer 模块替换列 https stackoverflow com questions 1019200 how to replace a column
  • 部署 Qt Quick 演示应用程序 Minehunt 时出现全白屏幕

    为了测试部署过程 我尝试部署附带的演示应用程序 Minehunt 我能够让它运行 没有崩溃或错误 但屏幕是全白的 我相信这通常意味着我缺少插件 Dependency walker 报告没有问题 我什至尝试包含 Qt MingW 插件目录中的
  • Start-Job - 实时检索输出

    我们通过以下方式启动 Powershell 函数Start Job并希望实时检索调用者的输出 有没有一种好的方法可以在不打电话的情况下做到这一点Retrieve Job在循环中 尝试这样的事情 appJob Start Job foreac
  • 对等网络应用程序的网络发现

    我希望有两个类 一个服务器类和一个客户端类 服务器类应该接收每个新客户端的 IP 地址和端口号并将它们存储在列表中 它应该为每个客户端提供已连接客户端及其 IP 地址的列表 然后 客户端可以使用 TCP 连接相互通信 问题是客户端不知道服务
  • 查找集合中的所有对象 Java Mongodb

    下面的代码查找集合中的第一个文档 package database import com mongodb BasicDBObject import com mongodb BulkWriteOperation import com mong
  • 使用 Python 从原始帧创建 MPEG4 视频文件

    我有一个原始视频帧源 我可以在 Python 中访问它 我想用它创建一个 MPEG4 视频 并带有 MP3 背景音乐 Python 中有哪些类型的工具和库可用于此类任务 最好我想要一个 API 我可以为其提供输出文件名 然后将各个帧作为 2
  • Aureliajs 等待应用程序构造函数上的数据

    我正在 aureliajs 中开发一个应用程序 开发过程已经开始了好几个月 现在后端开发人员希望对其服务进行版本控制 因此 我有一个 Web 服务可以调用来获取每个服务器端 Web api 应用程序的版本 然后 对于进一步的请求 调用正确的
  • 更好的德尔福印地 2007

    使用 Delphi 2007 附带的默认 indy10 或将其升级到最新快照版本哪个更好 为什么 谢谢 始终保持最新版本 它包含错误修复 如果您报告 Delphi 提供的库存版本存在问题 您将得到的第一个建议是升级到最新版本 因为您的错误可
  • 如何在选择自定义 UITableViewCell 时获取触摸坐标?

    当我触摸 触摸 UITableViewCell 时 我的 ViewController 的 UITableViewDelegate 方法 void tableView UITableView tableView didSelectRowAt
  • 整数包装对象仅在值 127 内共享相同的实例? [复制]

    这个问题在这里已经有答案了 这里它们是同一个实例 Integer integer1 127 Integer integer2 127 System out println integer1 integer2 outputs true 但这里
  • 在 ASP.NET 中通过 AJAX 使用后台工作程序

    我需要执行一项后台任务 该任务有一个显示完成百分比的进度条和一个取消按钮 撇开任务细节不谈 现在 我只想让一个示例正常工作 因此我只有三个主要事件处理程序 DoWork ProgressChanged 和 RunWorkerComplete
  • 检查 401,然后重定向 Angularjs,但仅在某些路由上

    我有一个很好的角度服务 可以通过查看服务器是否返回 401 错误消息来检查用户是否登录 如果是 用户将被重定向到登录页面 这很有效 但问题是它对于我的所有页面来说都是完全全局的 我有一条特殊路线位于 explore 顺便说一句 使用 UI
  • 使用 C# 更新 json 文件中的属性

    我希望更改 json 文件中每个 json 记录的特定属性 当方法完成执行时 我想将 Completed 属性更改为 true 我的 json 文件如下所示 LoanRecords LoanGUID 70dbec7e 5e94 460d 8
  • 如何将 AFHTTPClient、Afnetworking 1.0 迁移到 2.0

    我的问题是我有一个旧代码 我不知道如何更改它 我有 1 个名为 API HTTPClient 的类 我对 2 个方法有问题 因为我不知道如何将它们放入 2 0 中 这 void commandWithParams NSMutableDict