发送 HTTP POST 请求并从 iOS 上的服务器接收响应
Sending an HTTP POST request and Receive a responce from server on iOS
我正在尝试从服务器获取连接并接收来自服务器的响应,但我无法理解响应代码。
NSString *post = [NSString stringWithFormat:@"Username=%@&Password=%@",@"_username",@"_password"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https://<MY_URL>"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
if(conn) {
NSLog(@"Connection Successful");
} else {
NSLog(@"Connection could not be made");
}
这是否正确,因为我没有收到回复。??
现在响应代码是什么?????
NSURLResponse *response=nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSLog(@"%@",response);
if (response) {
//UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
//TableViewController *obj=[story instantiateViewControllerWithIdentifier:@"table1"];
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Login success" message:@"correct Username or Password" delegate:self cancelButtonTitle:@"Done" otherButtonTitles: nil];
[alert show];
//[self.navigationController pushViewController:obj animated:YES];
}
else
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Login Failure" message:@"Incorrect Username or Password" delegate:self cancelButtonTitle:@"Done" otherButtonTitles: nil];
[alert show];
}
您需要获取该数据:
NSError *error = nil;
NSURLResponse *response = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(responseData) {
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&error];
NSLog(@"res---%@", results);
}
并使用字典以供进一步使用。
所有代码都是正确的,只是您需要在 info.plist
中添加这个
App Transport Security Setting
- Allow arbitrary Loads
我正在尝试从服务器获取连接并接收来自服务器的响应,但我无法理解响应代码。
NSString *post = [NSString stringWithFormat:@"Username=%@&Password=%@",@"_username",@"_password"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"https://<MY_URL>"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:postData];
if(conn) {
NSLog(@"Connection Successful");
} else {
NSLog(@"Connection could not be made");
}
这是否正确,因为我没有收到回复。??
现在响应代码是什么?????
NSURLResponse *response=nil;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSLog(@"%@",response);
if (response) {
//UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
//TableViewController *obj=[story instantiateViewControllerWithIdentifier:@"table1"];
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Login success" message:@"correct Username or Password" delegate:self cancelButtonTitle:@"Done" otherButtonTitles: nil];
[alert show];
//[self.navigationController pushViewController:obj animated:YES];
}
else
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Login Failure" message:@"Incorrect Username or Password" delegate:self cancelButtonTitle:@"Done" otherButtonTitles: nil];
[alert show];
}
您需要获取该数据:
NSError *error = nil;
NSURLResponse *response = nil;
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(responseData) {
NSDictionary *results = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:&error];
NSLog(@"res---%@", results);
}
并使用字典以供进一步使用。
所有代码都是正确的,只是您需要在 info.plist
中添加这个App Transport Security Setting
- Allow arbitrary Loads