如何设置 application/json 以外的 Content-Type

2023-12-06

我正在尝试通过 AFNetworking2.0 向我的服务器发送 REST API,我们的服务器只接受Content-Type as application/vnd.mycom.mycom-csc+json当我发送请求时,它确实是json格式,

    self.operationMgr = [AFHTTPRequestOperationManager manager];
    self.operationMgr.securityPolicy.allowInvalidCertificates = YES;
    operationMgr.responseSerializer = [AFJSONResponseSerializer serializer];
    operationMgr.requestSerializer = [AFJSONRequestSerializer serializer];
    self.operationMgr.responseSerializer.acceptableContentTypes = [NSSet       setWithObject:@"application/vnd.mycom.mycom-csc+json"];
    [self.operationMgr.requestSerializer setValue:@"application/vnd.mycom.mycom-csc+json" forHTTPHeaderField:@"Accept"];
    [self.operationMgr.requestSerializer setValue:@"application/vnd.mycom.mycom-csc+json" forHTTPHeaderField:@"Content-Type"];

    [self.operationMgr POST:@"https://ip/rest" parameters:body
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
     }
     failure:^(AFHTTPRequestOperation* task, NSError* error){
         NSLog(@"Error: %@", error);
     }];

但它似乎不起作用,Content-Type总是被修改为application/json在我的请求中,谁能帮忙解决这个问题?非常感谢。


Update:从 AFNetworking 2.2.3 开始,您需要做的就是:

[requestSerializer setValue:@"application/vnd.mycom.mycom-csc+json" forHTTPHeaderField:@"Content-Type"];

更多详细信息,请参阅这个 Github 问题.


在 AFNetworking 2 中,序列化已被抽象为“请求序列化器”和“响应序列化器”。这些类被设计为子类化,以处理像您这样的任何特殊情况。

对于您的具体问题,最简单的方法是:

  1. 创建一个子类AFJSONRequestSerializer.
  2. 重写生成 URL 请求的方法,如下所示:

    - (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                                   withParameters:(id)parameters
                                            error:(NSError *__autoreleasing *)error {
        NSMutableURLRequest *mutableRequest = [[super requestBySer…etc.] mutableCopy];
        [mutableRequest setValue:@"application/vnd.mycom.mycom-csc+json" forHTTPHeaderField:@"Content-Type"];
        return mutableRequest;
    }
    
  3. 告诉您的运营经理使用您新创建的子类:

    operationMgr.requestSerializer = [MyAwesomeJSONRequestSerializer serializer];
    

我不确定您所看到的行为是否符合预期(文档与实现不完全匹配)。我在 Github 上打开了一个问题来讨论它。不管怎样,如果您只是想让它正常工作,我在这里提出的解决方法应该可以解决问题。

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

如何设置 application/json 以外的 Content-Type 的相关文章

随机推荐

  • Avro 生成的类与 json 转换有关的问题 [kotlin]

    我在编组 解组时遇到一个奇怪的问题avro生成的类 我收到的错误是抛出一个不是枚举错误 除非我的班级中没有任何枚举 错误具体是这样的 com fasterxml jackson databind JsonMappingException 不
  • img 标题属性显示块而不是外来字符

    我网站上的一些图片有title包含外来字符的属性 这些字符在网站的其余部分和 HTML 源代码中正确显示 但在小浏览器标题悬停上显示不正确 悬停 别处 Source img width 288 height 145 src http www
  • 返回上传到 firebase 的文件的下载 URL

    有没有一种简单的方法来获取上传到 Firebase 的文件的下载 URL 我尝试过使用我的上传函数返回的快照 但找不到任何东西 fileref put file then function snapshot self addEntry sn
  • Django 异常:django.core.exceptions.ImproperlyConfigured:

    当我在 django shell 中运行相同的代码时 它对我来说工作得很好 但是当我启动Python解释器 Python 2 来检查一些东西时 我在尝试导入时收到错误 from django contrib auth models impo
  • 无法在 Flutter 应用程序中加载当前位置

    我正在使用地理定位器插件并获取当前的纬度和经度 但我无法在 Flutter 应用程序的 initstate 中加载它 它显示渲染错误 void initState TODO implement initState super initSta
  • 如何在 Qt 中打印 QWidget?

    我需要知道如何将 QWidget 打印为 PDF 文件 Widget QDialog 包含很多标签 一些 QPlainTextEdit 和一个背景图像 该对话框显示一张收据 其所有字段均已填写 我已经尝试使用 QTextDocument 和
  • Flutter Firebase 通过 ID 数组获取文档

    如何使用 ID 列表从集合中获取文档查询 假设我有以下内容 List
  • 使用 jQuery 检测页面加载时鼠标悬停

    我想检测加载网页时鼠标是否位于某个元素上 看来这对于 jQuery 来说是不可能的 鼠标悬停 悬停等需要鼠标移动 与获取当前鼠标位置 与元素边界进行比较 一样 我还没有看到这个具体问题被问到 但看到人们说这是不可能的 我的解决方案 使用悬停
  • Python ftplib FTP传输文件上传中处理断开连接

    如何处理 ftplib 中的断开连接 我编写了一个 Python 脚本 用于使用 ftplib 将非常大的文件上传到 FTP 服务器 我的问题是 由于文件大小的原因 上传可能需要很长时间 如果中途断网 然后 1 分钟后重新连接怎么办 我该如
  • std::map 默认值

    有没有办法指定默认值std map s operator 当键不存在时返回 虽然这并不能完全回答问题 但我已经用这样的代码规避了这个问题 struct IntDefaultedToMinusOne int i 1 std map
  • 从渲染器接收消息超时:10.000

    运行我的场景时出现以下错误 org openqa selenium TimeoutException 超时 接收超时 来自渲染器的消息 10 000 会话信息 chrome 79 0 3945 79 构建信息 版本 3 14 0 修订版 a
  • 如何继承GWT项目中所需的模块?

    我想在我的 GWT 项目中使用 GWT FXv0 5 0MS 1 jar 我将 jar 文件添加到项目路径并使用语法上的代码 现在收到未继承的错误 错误信息是 11 28 48 829 ERROR uibuilder Line 80 No
  • 尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类

    我目前正在开发一个使用 javafx 作为 UI 的应用程序 我使用的是java 9 当我从github上拉出来继续在我的新计算机上开发并编译时 所有javafx类的引用都存在编译错误 并且只有javafx类 我在外部资源中的jdk中搜索了
  • 如何在Python中单行输入n个数字[重复]

    这个问题在这里已经有答案了 就像在 C 中一样 我如何要求用户输入一个范围内的内容 下面是 C 中获取用户输入的代码 include
  • 将环境变量传递给 gradle.properties

    我有一个这样的属性设置 url localhost 3206 有没有办法像下面这样指定 url hostname 3206 我不认为 gradle properties 支持插值 但是 我建议采用另一种方法来实现此目的 在你的 gradle
  • Asp.net 表单身份验证和多个域

    我有两个域 domain1 com 和domain2 com 指向同一个asp net 网站 该网站使用asp net 内置表单身份验证 问题是 即使域指向同一网站 用户一次也只能针对一个域进行身份验证 因此 如果他首先使用 www dom
  • JSF 2.0 中的 WEB.XML 错误页面

    我正在使用 JSF2 和 Glassfish 3 0 我有一个非常简单的应用程序 我正在尝试设置一些默认错误页面404 and 500 error 这是WEB XML部分
  • 插入表单时如何删除 Word 标记垃圾?

    我正在用 PHP 构建一个 CMS 我担心的一个问题是用户必须从现有的 Word 和 Excel 但不用担心 文档中填写数据 现在 我已经看到了当他们不小心从 Word 复制并粘贴到文本区域时会发生什么 数据库充满了垃圾标记 现在 我当然可
  • Xamarin 链接器:未找到 Cirrious.CrossCore.IoC.MvxPropertyInjector 类型的默认构造函数

    使用 HotTuna 包中的 FirstView 的骨架项目 并将构建链接器行为设置为 链接所有程序集 我收到以下错误 System MissingMethodException 找不到 Cirrious CrossCore IoC Mvx
  • 如何设置 application/json 以外的 Content-Type

    我正在尝试通过 AFNetworking2 0 向我的服务器发送 REST API 我们的服务器只接受Content Type as application vnd mycom mycom csc json当我发送请求时 它确实是json格