2017-05-06 2 views
0

を要求するためにAFNetworkingを使用する場合:error ==正しい形式でないため、データを読み取れませんでした。私は、ネットワークを要求すると

[Mysevers AFPOSTWithHud:YES andAddressname:@"Common/Currency/Register" parmas:params RequestSuccess:^(id result) { 

    if ([result[@"status"] intValue] == 200) { 

     [SVProgressHUD showSuccessWithStatus:@"注册成功"]; 

     UIViewController *temp_vc = nil; 

     for (UIViewController *vc in self.navigationController.childViewControllers) { 

      if ([vc isKindOfClass:[HomeVC class]]) { 

       temp_vc = vc; 
       break; 
      } 
     } 

     if (temp_vc == nil) { 
      return; 
     } 

     [self.navigationController popToViewController:temp_vc animated:YES]; 

    }else { 

     [SVProgressHUD showErrorWithStatus:@"注册失败"]; 
    } 

} failBlcok:^{ 
    SVNoNet; 
}]; 

私はネットワークを要求したとき、私はエラーを取得:

[Mysevers AFPOSTWithHud:andAddressname:parmas:RequestSuccess:failBlcok:] _block_invoke.47] [行号:57] error ==正しい形式でないため、データを読み込めませんでした。

Myseversコードは以下の通りです:

@implementation Mysevers 

+ (AFHTTPSessionManager *)sharedHTTPSession{ 
    static dispatch_once_t onceToken; 
    static AFHTTPSessionManager *requestManager ; 
    dispatch_once(&onceToken, ^{ 
     requestManager = [AFHTTPSessionManager manager]; 
     requestManager.requestSerializer.timeoutInterval = 10; 
     requestManager.requestSerializer = [AFJSONRequestSerializer serializer]; // 添加,否则会返回500错 
     requestManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil]; 
    }); 
    return requestManager; 
} 


+(void)AFPOSTWithHud:(BOOL)hud andAddressname:(NSString*)addressName parmas:(NSDictionary*)parmas RequestSuccess:(void(^)(id result))success failBlcok:(void(^)(void))failBlcok 
{ 
    if (hud) { 
     //[HUD addHUD]; 

     [SVProgressHUD show]; 
    } 

    AFHTTPSessionManager *requestManager = [Mysevers sharedHTTPSession]; 
    //requestManager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 

    NSString *urlStr = [NSString stringWithFormat:@"%@%@",BASE_URL,addressName]; 
    DLog(@"%@",urlStr); 

    [requestManager POST:urlStr parameters:parmas progress:^(NSProgress * _Nonnull uploadProgress) { 

    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
     if (hud) { 
      //[HUD removeHUD]; 
      [SVProgressHUD dismiss]; 
     } 
     success(responseObject); 
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 

     if (error != nil) { 
      DLog(@"error==%@",[error localizedDescription]); 
      if (hud) { 
       //[HUD removeHUD]; 
       [SVProgressHUD dismiss]; 
      } 
      failBlcok(); 
     } 


     return ; 
    }]; 


} 

注意は、私のacceptableContentTypesは以下の通りです:

requestManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil] 

更新

私はこれに私のsharedHTTPSessionを変更:

+ (AFHTTPSessionManager *)sharedHTTPSession{ 
    static dispatch_once_t onceToken; 
    static AFHTTPSessionManager *requestManager ; 
    dispatch_once(&onceToken, ^{ 
     requestManager = [AFHTTPSessionManager manager]; 
     requestManager.requestSerializer.timeoutInterval = 10; 
     AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
     [serializer setStringEncoding:NSUTF8StringEncoding]; 
     requestManager.requestSerializer=serializer; 
     //requestManager.requestSerializer = [AFJSONRequestSerializer serializer]; // 添加,否则会返回500错 
     requestManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil]; 
    }); 
    return requestManager; 
} 

それでもこのエラーが発生します。

PHPerは$_POSTを空の配列として出力します。


(lldb) po result 
{ 
    data = ""; 
    msg = 2001; 
    status = 400; 
} 

結果はmsgは彼がちょうど$_POSTが空で、定義されている、PHPerが私に戻っています。


ATTENTION -2マイAFHTTPSessionManager.m

、Iは要求ヘッダーに行を追加します。私の

AFHTTPSessionManager.m
#pragma mark - add by me 

     [request addValue:API_KEY forHTTPHeaderField:@"PUBLICKEY"]; 

- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method 
             URLString:(NSString *)URLString 
             parameters:(id)parameters 
            uploadProgress:(nullable void (^)(NSProgress *uploadProgress)) uploadProgress 
           downloadProgress:(nullable void (^)(NSProgress *downloadProgress)) downloadProgress 
             success:(void (^)(NSURLSessionDataTask *, id))success 
             failure:(void (^)(NSURLSessionDataTask *, NSError *))failure 
{ 
    NSError *serializationError = nil; 
    NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; 

#pragma mark - add by me 

    [request addValue:API_KEY forHTTPHeaderField:@"PUBLICKEY"]; 

    if (serializationError) { 
     if (failure) { 
#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wgnu" 
      dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ 
       failure(nil, serializationError); 
      }); 
#pragma clang diagnostic pop 
     } 

     return nil; 
    } 

    __block NSURLSessionDataTask *dataTask = nil; 
    dataTask = [self dataTaskWithRequest:request 
          uploadProgress:uploadProgress 
         downloadProgress:downloadProgress 
         completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { 
     if (error) { 
      if (failure) { 
       failure(dataTask, error); 
      } 
     } else { 
      if (success) { 
       success(dataTask, responseObject); 
      } 
     } 
    }]; 

    return dataTask; 
} 

更新-3

Iは、以下に、すべての印刷情報を置く:

2017年5月6日18:03:31.685086 KYGM [15582:531703] systemgroupため[MC]システムグループコンテナを.com.apple.configurationprofilesパスは/Users/luowensheng/Library/Developer/CoreSimulator/Devices/2FACECB7-2E7A-4E8C-8AF5-179ED7344D93/data/Containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2017- 05-06 18:03:31.686106 KYGM [15582:531703] [MC]個人的な有効なユーザー設定からの読み取り。
2017-05-06 18:03:39.568 KYGM [15582:531703] [ユーザー名:/ユーザー/デスクトップ/ company_project/KYGM/KYGM/Utils/LML/LMLUtils/Mysevers。M] [函数名:+ [Mysevers AFPOSTWithHud:andAddressname:parmas:RequestSuccess:failBlcok:] [行号:47] http://192.168.3.103:8003/Common/Currency/Register


更新-04

Iを使用する場合postmanをリクエストすると、私は成功します。

enter image description here

フォームデータが理由である場合、私は知りません。コードの下

試み:私はあなたの郵便配達ののparam-データ型がform-dataです見つけるので、私はあなたがAFNetworkingのフォーム提出方法を使用すべきだと思う

+0

間違ってどのような形式では、それを何ですか? – vadian

+0

@vadian私は 'シリアライザ'を 'utf-8'に設定しましたが、それでもエラーが出ます。 –

+0

'utf8'はフォーマットではありません。 – vadian

答えて

0

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 

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

    NSDictionary *params = @{ 
          @"UserName":@"admin5", 
          @"Password":@"123456" 
          }; 


    [manager POST:@"your url" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { 

     NSLog(@"formData=%@", formData); 

    } progress:^(NSProgress * _Nonnull uploadProgress) { 

    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 

     NSLog(@"responseObject=%@", responseObject); 

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
     NSLog(@"error=%@", error); 
    }]; 
関連する問題