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);
}
}