向服務器發送json數據的方法匯總


1 AFNetworking3.0如何post一個json數據到服務器

 NSDictionary *dic = @{@"username":self.registerPhoneField.text,@"phone":self.registerPhoneField.text,@"psw":self.registerPasswordField.text};
// 初始化Manager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 不加上這句話,會報“Request failed: unacceptable content-type: text/plain”錯誤,因為我們要獲取text/plain類型數據
manager.responseSerializer = [AFHTTPResponseSerializer serializer];


[manager POST:@"http://10.1.130.77/login/submit" parameters:dic progress:^(NSProgress * _Nonnull downloadProgress) {
    // 這里可以獲取到目前的數據請求的進度
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    // 請求成功,解析數據
    NSLog(@"%@", responseObject);
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
    
    NSLog(@"%@", dic);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    // 請求失敗
    NSLog(@"%@", [error localizedDescription]);
}];

豐富版 加入了json轉化代碼

NSDictionary *dic = @{@"username":self.loginPhoneFiled.text,@"phone":self.loginPhoneFiled.text,@"psw":self.loginPasswordField.text};

// 初始化Manager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 不加上這句話,會報“Request failed: unacceptable content-type: text/plain”錯誤,因為我們要獲取text/plain類型數據
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer =[AFJSONRequestSerializer serializer];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

[manager.requestSerializer setValue:@"application/json"forHTTPHeaderField:@"Accept"];
[manager.requestSerializer setValue:@"application/json;charset=utf-8"forHTTPHeaderField:@"Content-Type"];


NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
request.HTTPBody = data;
// post請求
[manager POST:@"http://10.1.130.77:8080/login/submit.do" parameters:dic constructingBodyWithBlock:^(id  _Nonnull formData) {
    // 拼接data到請求體,這個block的參數是遵守AFMultipartFormData協議的。
    
} progress:^(NSProgress * _Nonnull uploadProgress) {
    // 這里可以獲取到目前的數據請求的進度
    
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    
    // 請求成功,解析數據
    NSLog(@"%@", responseObject);
    
    NSDictionary *dic1 = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers |         NSJSONReadingMutableLeaves error:nil];
    
    NSLog(@"%@", dic1);
    
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    
    // 請求失敗
    NSLog(@"%@", [error localizedDescription]);
}];

2 AFNetworking2.0如何post一個json數據到服務器

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//申明返回的結果是json類型
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//申明請求的數據是json類型
manager.requestSerializer=[AFJSONRequestSerializer serializer];
//如果報接受類型不一致請替換一致text/html或別的
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
//傳入的參數
NSDictionary *parameters = @{@"1":@"XXXX",@"2":@"XXXX",@"3":@"XXXXX"};
//你的接口地址
NSString *url=@"http://xxxxx";
//發送請求
[manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

3 NSURLConnection

      // 1.創建請求
     NSURL *url = [NSURL URLWithString:@"http://10.1.130.77:8080/login/submit.do"];
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
     request.HTTPMethod = @"POST";

     // 2.設置請求頭
     [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

     // 3.設置請求體
     NSDictionary *json = @{
                                                          @"username" : self.loginPhoneFiled.text,
                                                          @"phone" : self.loginPasswordField.text,
                                                          @"psw" : self.loginPhoneFiled.text
                                                          };

 //    NSData --> NSDictionary
     // NSDictionary --> NSData
     NSData *data = [NSJSONSerialization dataWithJSONObject:json options:NSJSONWritingPrettyPrinted error:nil];
     request.HTTPBody = data;

     // 4.發送請求
     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
          
         }];

4ASIHTTPRequest提交JSON數據

            NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil];
            if ([NSJSONSerialization isValidJSONObject:user])
            {
                NSError *error;
                NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error];
                NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
                //NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]);
                
                NSURL *url = [NSURL URLWithString:@"http://42.96.140.61/lev_version.php"];
                ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
                [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];
                [request addRequestHeader:@"Accept" value:@"application/json"];
                [request setRequestMethod:@"POST"];
                [request setPostBody:tempJsonData];
                [request startSynchronous];
                NSError *error1 = [request error];
                if (!error1) {
                    NSString *response = [request responseString];
                    NSLog(@"Test:%@",response);
                }
            }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM