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

  • 相关阅读:
    Nokia N78拍照最佳设置!
    摩托Milestone购机鉴别篇
    sdf
    js随笔
    jssip无法识别以数字开始的域
    ASP.NET页面生命周期与优化
    在SQLServer2005中使用全文搜索
    简析正则表达式
    《WCF编程》之错误
    《WCF编程》之实例管理
  • 原文地址:https://www.cnblogs.com/ziyouchutuwenwu/p/9019962.html
Copyright © 2011-2022 走看看