IOS AFN pasa parámetros al servidor a través del cuerpo

IOS AFN pasa parámetros al servidor a través del cuerpo

2017-07-10 20: 19Caminando  en la grava 

  1. Este fragmento de código es adecuado para pasar parámetros en formato json cuando se solicita una interfaz, en lugar de un diccionario común. Al mismo tiempo, establezca el tipo de contenido del encabezado de la solicitud: application / json; charset = UTF-8
  2. Importe primero el archivo AFN o el pod.

El tipo de contenido predeterminado de AFNetwoking es application / x-www-form-urlencodem. Si el servidor requiere que el Tipo de contenido sea application / json, para que se corresponda con el servidor, debe modificar el Tipo de contenido de AFNetworking

=========== Acabo de ver más código sin problemas en otros bloggers, no se recomienda el siguiente código. Puede omitir el uso del segundo bloque de código directamente ===

NSDictionary *parameters= @{@"client_type":@"你的参数",@"你的参数":@"1"};

//设置参数 根据你们服务器的格式设置。我们的后台需要传的是json格式的

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters  
 options:NSJSONWritingPrettyPrinte  error:nil];

 //afn请求
 AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration: 
 [NSURLSessionConfiguration defaultSessionConfiguration]];

      NSString * requestUrl  = @"你的请求地址";
    //如果你不需要在请求体里传参 那就参数放入parameters里面
      NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] 
       requestWithMethod:@"POST" URLString:requestUrl parameters:nil error:nil];

    // NSLog(@"requestURL:%@",requestUrl);
     request.timeoutInterval= 10;

    //这句话很重要,设置"Content-Type"类型 json类型跟后台大哥的一致
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    // 设置参数放入到body请求体里。后台大哥让参数放在请求体里,因为没写这句代码,我TM调试浪费了半天
    [request setHTTPBody:jsonData];

    AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
    responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
                 @"text/html","text/json", @"text/javascript",@"text/plain",  nil];

        manager.responseSerializer = responseSerializer;

    [[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil         
      completionHandler:^(NSURLResponse *response,id responseObject,NSError *error){

           if(responseObject!=nil){

               NSString *result = [[NSString alloc] initWithData:responseObject  
           encoding:NSUTF8StringEncoding];
           NSLog(@"%@",result);

           }

       }]resume];

    La segunda solución: recomendada

  
   NSDictionary *parameters= @{@"client_type":@"你的参数",@"你的参数":@"1"};



    AFHTTPSessionManager *session = [AFHTTPSessionManager manager];
    session.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/html", @"text/plain", nil];
    //post 发送json格式数据的时候加上这两句。
    session.requestSerializer = [AFJSONRequestSerializer serializer];
    session.responseSerializer = [AFJSONResponseSerializer serializer];
    session.requestSerializer.timeoutInterval = 15;
//     NSString * requestUrl  = @"http://47.244.143.48:8080/auth/getVerificationCode";
    NSString * requestUrl  = @"http://192.168.1.10:8080/auth/getVerificationCode";
    [session POST:requestUrl parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (responseObject) {
            NSLog(@"post成功了%@",responseObject);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (error) {
            NSLog(@"post失败了%@",error);
            }
    }];

 

Supongo que te gusta

Origin blog.csdn.net/ximiaoweilai/article/details/102942632
Recomendado
Clasificación