这是我的代码:
#import "MainClass.h"
@implementation MainClass
- (IBAction)actionButton:(id)sender {
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL
URLWithString:@"https://login.dnevnik.ru/auth"]
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];
request.HTTPMethod = @"POST";
NSString *username = _loginLogin.text;
NSString *password= _passwordLogin.text;
GlobalUserName = username;
GlobalPassword = password;
/*NSUserDefaults *loginData = [NSUserDefaults standardUserDefaults];
NSString *username1 = [loginData objectForKey:@"username"] ;
NSString *password1 = [loginData objectForKey:@"password"];*/
NSString * param = [NSString stringWithFormat:@"&username=%@&password=%@", username, password];
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (connection) {
_otvet.text = @"Connection setup";
NSLog(@"ama ama");
}
else
{
_otvet.text=@"Problem with connection";
NSLog(@"ama ama faza");
}
}
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
UIAlertView *errorAlert = [[UIAlertView alloc]
initWithTitle:@"Ошибка" message:@"Problem with intrnet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString * data = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
if ([data isEqual: @"OK"]) {
_otvet.text = @"Yeah";
NSLog(@"Yeah");
}
else
{
NSLog(@"Error %@,%@",GlobalUserName,GlobalPassword);
}
}
显示消息,NSLog(@"Error %@,%@",GlobalUserName,GlobalPassword)
因为方法isEqual说我的数据不一样。我该怎么办?我不确定发送正确的站点登录名和密码。告诉我如何确定发送数据的位置(哪个),我没有网站!网站www.dnevnik.ru !!
答案 0 :(得分:1)
您需要正确设置参数字符串。
在您的代码中
NSString * param = [NSString stringWithFormat:@"&username=%@&password=%@", username, password];
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
这看起来像您要使用内容类型application/x-www-form-urlencoded
。但是,参数字符串以“&”开头 - 这绝对是一个错误。
当使用内容类型为application/x-www-form-urlencoded
的类似参数时,我建议将参数创建为(未编码的)NSString键/值对,创建NSDictionary
并使用下面描述的辅助方法答案在这里(API POST method not saving data in sql server)创建一个正确编码的参数字符串,您可以将其添加到正文中。
不要忘记将“Content-Type”标题设置为application/x-www-form-urlencoded
。