使用 AFNetworking 2.0 的 POST 请求 - AFHTTPSessionManager

2023-11-27

Hej,

我正在努力向解析 REST API 发出 POST 请求。我正在使用 AFNetworking 2.0。我的 AFHTTPSessionManager 子类代码如下所示:

+ (ParseAPISession *)sharedSession {
     static ParseAPISession *sharedSession = nil;
     static dispatch_once_t onceToken;
     dispatch_once(&onceToken, ^{
         sharedSession = [[ParseAPISession alloc] initWithBaseURL:[NSURL URLWithString:kSDFParseAPIBaseURLString]];
    });
   return sharedSession;
}

And:

- (id)initWithBaseURL:(NSURL *)url {
    self = [super initWithBaseURL:url];
    if (self) {
       [self.requestSerializer setValue:kSDFParseAPIApplicationId forHTTPHeaderField:@"X-Parse-Application-Id"];
       [self.requestSerializer setValue:kSDFParseAPIKey forHTTPHeaderField:@"X-Parse-REST-API-Key"];
   }

   return self;
}

我正在做这样的请求:

[[ParseAPISession sharedSession] POST:@"ClassName" parameters: [NSDictionary dictionaryWithObjectsAndKeys:@"name", @"name", nil] 
                              success:^(NSURLSessionDataTask *task, id abc) {
                                  NSLog(@"%@", abc);
                              } failure:^(NSURLSessionDataTask *task, NSError *error) {
                                  NSLog(@"%@", error);
}];

这样做我总是会遇到这种错误:

错误域 = NSCocoaErrorDomain 代码 = 3840 “操作无法完成。(Cocoa 错误 3840。)”(JSON 文本未以数组或对象开头,并且未设置允许片段的选项。) UserInfo = 0x8c72420 {NSDebugDescription = JSON 文本未从数组或对象开始,并且未设置允许片段的选项。}

由于 GET 请求就像一个魅力,我很困惑为什么我不能发布一些东西。有人能帮我解决这个问题吗?

此致!

UPDATE

幸运的是,经过多次测试后,该错误消息不再显示,不幸的是,出现了另一个错误消息:

<NSHTTPURLResponse: 0x8b96d40>
{ URL: https://api.parse.com/1/users }
{ status code: 400, 
headers {
    "Access-Control-Allow-Origin" = "*";
    "Access-Control-Request-Method" = "*";
    "Cache-Control" = "no-cache";
    Connection = "keep-alive";
    "Content-Length" = 130;
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Wed, 30 Oct 2013 20:01:58 GMT";
    Server = "nginx/1.4.2";
    "Set-Cookie" = "_parse_session=BAh7BkkiD3Nlc3Npb25faWQGOgZFRiIlNjIxZjUxMzY3NWVhZWJmMDYyYWYwMGJiZTQ3MThmMWE%3D--851bd31b07e7dba2c5f83bb13a8d801ecbea42c4; domain=.parse.com; path=/; expires=Fri, 29-Nov-2013 20:01:58 GMT; secure; HttpOnly";
    Status = "400 Bad Request";
    "X-Runtime" = "0.060910";
    "X-UA-Compatible" = "IE=Edge,chrome=1";
} }

谁能告诉我 Status: 400 Bad Request 告诉我什么以及如何摆脱它?


此错误意味着您的 POST 请求已通过,服务器已成功返回一些数据,这NSJSONSerialization解析时遇到问题。

您可能需要设置您的AFJSONResponseSerializer允许 JSON 片段。

In the init你的方法AFHTTPSessionManager子类:

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
[self setResponseSerializer:responseSerializer];

如果这不起作用,则可能存在编码问题。来自NSJSONSerialization类参考:

数据必须采用 JSON 规范中列出的 5 种支持的编码之一:UTF-8、UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE。数据可能有也可能没有 BOM。用于解析的最有效的编码是 UTF-8,因此,如果您可以选择对传递给此方法的数据进行编码,请使用 UTF-8。

检查服务器发送的编码类型。

最后,您可以在 AFNetworking 内部设置断点,或者设置AF网络活动记录器,它将记录向您的控制台发送和接收的请求。该工具对于调试此类问题非常有帮助。

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

使用 AFNetworking 2.0 的 POST 请求 - AFHTTPSessionManager 的相关文章

随机推荐

  • Excel进程未关闭[重复]

    这个问题在这里已经有答案了 我有这个 C 程序 它永远不会关闭 Excel 进程 基本上 它会查找某个字符串在 Excel 中某个范围内出现的实例数 我尝试了各种方法 但没有效果 有一个表单正在调用此方法 但这不会改变进程未关闭的原因 我看
  • JQuery / JS:检测用户的滚动尝试,没有任何窗口溢出滚动到

    我正在开发一个过渡网站 虽然我想使用用户的滚动尝试作为过渡启动器 但我不希望有窗口滚动条 现在 我只是用 jquery 检测用户滚动 我已经将窗口大小设置为比用户屏幕的滚动条高 1px 尽管这是我试图避免的 scroll function
  • [Android]NumberPicker 选中项改变颜色

    是否可以更改 numberpicker 中所选项目的颜色 以便每次出现新的中心子 TextView 时将其颜色更改为我喜欢的颜色 但我没有找到任何与此相关的样式或 API 公开 I tried to follow many answers
  • 更改 Chrome 4xx 页面

    我正在部署一个信息亭系统 该系统使用 Chrome 来显示在 jetty 中运行的 java web 应用程序 该应用程序以 Windows 服务包装器启动 系统启动后需要一些时间才能让 jetty 准备好提供内容 因此现在我需要等待 然后
  • 如何按照声明的顺序读取类属性?

    我正在编写一个读取类属性并将它们存储在列表中的元类 但我希望列表 cls columns 尊重声明顺序 即 mycol2 mycol3 zut cool menfin a在我的例子中 import inspect import pprint
  • ActiveMQ Jolokia API 如何获取完整的消息正文

    我想编写自己的 ActiveMQ 监视器 我可以从队列中获取队列和消息 但消息正文 内容 很短 如何获得完整的消息正文 这个我已经测试过了 Get Always errors http localhost 8161 api jolokia
  • 按行数拆分数据框

    我有一个由 400 000 行和大约 50 列组成的数据框 由于这个数据帧太大 处理起来计算量太大 我想将此数据帧分割成更小的数据帧 然后运行我想要运行的函数 然后最后重新组装数据帧 我没有想用来分割此数据框的分组变量 我只想按行数将其拆分
  • Rails/ActiveRecord:将更改保存到模型的关联集合

    我是否必须保存对模型集合中各个项目的修改 或者是否可以在保存模型时调用一种方法来保存它们 save似乎没有这样做 例如 irb gt rental gt
  • 使用 PowerShell 以 UTF-8 写入无 BOM 的文件

    Out File使用 UTF 8 时似乎会强制使用 BOM MyFile Get Content MyPath MyFile Out File Encoding UTF8 MyPath 如何使用 PowerShell 以 UTF 8 格式写
  • 创建已完成的任务

    我正在实现一个方法Task
  • Scala“<-”用于理解

    我发现 Scala 总是对任何事情都有 自然的解释 总是类似 哦 但这只是用这个和那个参数在这个和那个对象上调用的函数 从某种意义上说 没有什么是真正像我们从其他语言中了解到的那样具有编译器魔力 我的问题是关于 lt 运算符如以下代码中所使
  • Jersey 客户端下载并保存文件

    我是球衣 JAX RS 实施的新手 请在下面找到我的球衣客户端代码来下载文件 Client client Client create WebResource wr client resource http localhost 7070 up
  • iPhone 模拟器和 applicationWillTerminate()

    当我的应用程序在 iPhone 模拟器中运行时 委托方法 void applicationWillTerminate UIApplication application 仅在我第一次按下 iPhone 模拟器的主页按钮时调用 按下主页按钮并
  • 找不到模块“puppeteer-core/internal/common/Device.js”

    重现问题的步骤 我使用 npm i puppeteer 安装了 puppeteer 使用 WSL ubuntu 当我尝试在一个简单的测试中加载 puppeteer 时 import puppeteer from puppeteer 我收到错
  • Moviepy 无法读取文件的持续时间

    我一直在使用 Moviepy 将几个较短的视频文件合并为一个小时长的文件 一些小文件被 损坏 它们包含视频但未正确完成 即它们使用 VLC 播放 但没有持续时间 并且您无法在视频中跳过 当我尝试使用 VideoFileClip file 函
  • NSString Compare: 和 isEqual(ToString): 之间有区别吗?

    有时我会发现测试两个是否存在的代码NSStrings 是一样的 if str1 compare str2 NSOrderedSame Do something 现在 我相信这比使用的可读性更差isEqualToString 它也有一些令人讨
  • Pygame:导入错误:libSDL_ttf-2.0.so.0:无法打开共享对象文件:没有这样的文件或目录

    从源代码来看 游戏运行良好 当我在 Linux 上使用 cx Freeze 编译二进制文件时 我在第二台机器上遇到了错误 tmp exe linux x86 64 2 7 rungame home local tmp exe linux x
  • Codeigniter 中的 PHPExcel 错误

    我正在尝试将 PHPExcel 与 CodeIgniter 一起使用 但我有一个错误 致命错误 从第 949 行 C ms4w Apache htdocs plantation system core Loader php 中的上下文 CI
  • 异步等待 + toPromise 挂起

    我在用着ngx 条纹 并且 createToken 返回一个 Observable 我尝试将其转换为 Promise 以便我可以使用 Async await 然而 这个承诺似乎并没有兑现 调试不会透露任何内容 并且我的 try Catch
  • 使用 AFNetworking 2.0 的 POST 请求 - AFHTTPSessionManager

    Hej 我正在努力向解析 REST API 发出 POST 请求 我正在使用 AFNetworking 2 0 我的 AFHTTPSessionManager 子类代码如下所示 ParseAPISession sharedSession s