• ios下表单post使用gzip模式


    使用afnetworking,服务器参考的这里

    ios端,使用自己的序列化类

    manager.requestSerializer = [MyHttpRequestSerializer new];
    [manager.requestSerializer setValue:
    @"gzip" forHTTPHeaderField:@"Accept-Encoding"];
    [manager.requestSerializer setValue:
    @"gzip" forHTTPHeaderField:@"Content-Encoding"];

    h文件

    #import <Foundation/Foundation.h>
    #import "AFURLRequestSerialization.h"
    
    @interface MyHttpRequestSerializer : AFHTTPRequestSerializer
    
    @end

    关键代码,参考AFJSONRequestSerializer

    @implementation MyHttpRequestSerializer
    
    - (nullable NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
                                            withParameters:(nullable id)parameters
                                                     error:(NSError * _Nullable __autoreleasing *)error NS_SWIFT_NOTHROW{
    
        NSParameterAssert(request);
        
        if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
            return [super requestBySerializingRequest:request withParameters:parameters error:error];
        }
        
        NSMutableURLRequest *mutableRequest = [request mutableCopy];
        
        [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) {
            if (![request valueForHTTPHeaderField:field]) {
                [mutableRequest setValue:value forHTTPHeaderField:field];
            }
        }];
        
        if (parameters) {
            if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
                [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
            }
            
            NSData* data = [NSJSONSerialization dataWithJSONObject:parameters options:(NSJSONWritingOptions)0 error:nil];
            NSData* zippeddata = [LFCGzipUtillity gzipData:data];
            [mutableRequest setHTTPBody:zippeddata];
        }
        
        return mutableRequest;
    }
    
    @end

    android相关资料在这里

    rails5的相关资料在这里

  • 相关阅读:
    回车与换行的区别
    C# 验证数字
    FCKeditor 2.6.6在ASP中的安装及配置方法分享--ZZ转载自网络
    关于Application.Lock…Application.Unlock有什么作用?
    关于Application.Lock和Lock(obj)
    C#解决Linq OrderBy() 失效的小技巧
    文件夹添加 IIS 应用程序池用户权限
    we7调用模板如何区分栏目页与详细页
    第二阶段冲刺(第十天)
    每周总结(第十六周)
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/9019962.html
Copyright © 2020-2023  润新知