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的相关资料在这里

  • 相关阅读:
    Java 泛型学习四 自动擦除
    Java 泛型学习三 通配符
    ava的动态性支持学习七 方法句柄调用的性能对比
    Java 泛型学习一 泛型概念
    Java中正则Matcher类的matches()、lookAt()和find()的区别
    Java 泛型学习五 泛型擦除带来的不自然
    Java I/O 流的简单介绍及示例
    Java 泛型学习二 泛型的限制
    Java 泛型学习六 泛型类型系统
    字节存储机制:bigedian 和 littleendian
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/9019962.html
Copyright © 2011-2022 走看看