zoukankan      html  css  js  c++  java
  • 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的相关资料在这里

  • 相关阅读:
    git连接远程GitHub仓库详细总结 for HTTPS协议
    软工课程总结&小黄衫获奖感言
    Yum项目上线实战(网站运维)
    MySQL基础
    Shell基础
    Linux网络基础
    Linux的权限管理操作
    linux自有服务(2)
    Linux自有服务
    Linux基本指令
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/9019962.html
Copyright © 2011-2022 走看看