Во-первых, я бы не передать имя пользователя и пароль через в ссылке. Вы должны сделать это, используя пост.
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://URL/service1.asmx?"]];
NSString *userName = [NSString stringWithFormat:@"parameterUser=%@",txtUserName];
NSString *passWord = [NSString stringWithFormat:@"parameterPass=%@",txtPassword];
NSString *postString = [NSString stringWithFormat:@"username=%@&password=%@",userName, passWord];
NSData *postData = [NSData dataWithBytes: [postString UTF8String] length: [postString length]];
//URL Requst Object
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:TIMEOUT];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody: postData];
Это более безопасный способ передачи конфиденциальных данных по URL-адресу.
Редактировать
Чтобы получить ответ, вы можете проверить это. NSURLConnection и AppleDoc NSURLConnection
Вы можете использовать несколько разных методов для обработки ответа с сервера. Вы можете использовать NSURLConnectionDelegate
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[self.connection start];
вместе с спинами делегата вызова:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"didReceiveData");
if (!self.receivedData){
self.receivedData = [NSMutableData data];
}
[self.receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"connectionDidFinishLoading");
NSString *receivedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"receivedString:%@",receivedString);
}
Или вы можете также использовать NSURLConnection sendAsynchronousRequest
блок
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
{
NSString *receivedString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"receivedString:%@",receivedString);
}];
Я предполагаю, что это для упражнений, потому что это очень небезопасно. – Cyrille
Вы действительно не должны указывать имя пользователя или пароль в URL-адресе. Вместо этого он должен быть в заголовках или в теле, предпочтительно закодированном/зашифрованном, отправленном через https (secure http). – Paaske
@Paaske Спасибо за это предложение. На самом деле я хочу сделать это безопасным. Как я могу это сделать? – bapi