Войти через HTTP Post: iPhone - PullRequest
       11

Войти через HTTP Post: iPhone

1 голос
/ 14 декабря 2010

Я создал вид входа в систему. Каждый раз, когда я вхожу в систему, выдается ошибка входа в систему, даже если я ввожу правильные учетные данные. Это метод, который я использую сейчас:

NSString *postString = [[NSString alloc] initWithFormat:@"username=%@&password=%@",userName, password];
    // Package the string in an NSData object
    NSData *requestData = [postString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]];  

    // Create the URL request
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString:@"https://172.168.1.9/dologin.php"]];  // create the URL request
    [request setHTTPMethod: @"POST"];   // you're sending POST data
    [request setHTTPBody: requestData];  // apply the post data to be sent
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    // Call the URL
    NSURLResponse *response;  // holds the response from the server
    NSError *error;   // holds any errors
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&error];

1 Ответ

2 голосов
/ 14 декабря 2010

Можете ли вы проверить, что ответ?Кроме того, вам, вероятно, следует кодировать параметры, которые вы публикуете: Objective-c iPhone проценты кодируют строку?

Пример ASIHttpRequest

- (void)btnLoginTap {
    [txtUsername resignFirstResponder];
    [txtPassword resignFirstResponder];

    NSURL *url = [[NSURL alloc] initWithString:YOUR_URL_HERE];
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setTimeOutSeconds:120];
    [request setPostValue:txtUsername.text forKey:@"username"];
    [request setPostValue:txtPassword.text forKey:@"password"];
    [request setDelegate:self];
    [request startAsynchronous];
    [url release];

    //Show a loading view or something here while you wait for the response...
}

- (void) requestFinished:(ASIHTTPRequest *)request {
    //Hide your loading view here.
    NSString *responseString = [request responseString];
    DLog(@"%@", responseString);
    //Request succeeded
}

- (void) requestFailed:(ASIHTTPRequest *)request {
    //Hide your loading view here.
    NSError *error = [request error];
    DLog(@"%@", [error localizedDescription]);
    //Request failed
}
...