как запросить URL для подключения - PullRequest
0 голосов
/ 15 августа 2010

как запросить URL для выполнения или подключения к серверу. то, что я использовал, не работает ..

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@%@%@%@%@%@%@%@",[ConfigDB valueForKey:@"mailURL"], @"?ownerID=", [ConfigDB ownerID], @"&userid=",[ConfigDB userID],@"&pID=",pid,@"&emailAddress=",emailTxtField.text,[ConfigDB valueForKey:@"showEmailFlag"]]]; 


NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:url];

1 Ответ

1 голос
/ 15 августа 2010

Это довольно stringWithFormat сообщение! Первое, что нужно проверить, это то, что вы получаете URL, который соответствует вашим ожиданиям.

Как только вы получите объект запроса URL-адреса и подумаете об использовании обычного NSURLRequest, он должен быть быстрее и не похоже, что вы собираетесь использовать этот объект повторно:

// already autoreleased
NSURLRequest *request = [NSURLRequest requestWithURL:url];

Тогда вам нужно сделать запрос. Здесь есть два подхода. Вы будете использовать NSURLDownload, если хотите сохранить запрос в файл. Похоже, вы пытаетесь сделать GET запрос к какому-либо почтовому серверу, поэтому вам, вероятно, нужен другой подход: NSURLConnection.

NSURLConnection в основном предназначен для асинхронных запросов. Вы предоставляете делегату некоторые методы, и ваша NSURLConnection будет использовать эти методы, чтобы сообщить вам, когда будет установлено соединение; были ли ошибки; и т.д.

Добавьте свойство к вашему классу контроллера представления для соединения, а также свойство NSMutableData. Вы начнете свое соединение с (при условии, что ваш текущий класс также является вашим делегатом):

// initialize our storage for the file
self.downloadData = [NSMutableData dataWithLength:1024];
// create and start the connection
self.urlConnection = [NSURLConnection connectionWithRequest:request delegate:self];
if(nil == self.urlConnection) {
    NSLog(@"Couldn't create connection to url %@", url);
}

Где-то в вашем коде - возможно, в вашем текущем контроллере представления - вам нужно реализовать эти методы:

-(void) connection:(NSURLConnection*)connection didReceiveData:(NSData*)data {
    // if you have more than one NSURLConnection in this class, test against the 
    // connection parameter

    [downloadData appendData:data];
}

-(void) connectionDidFinishLoading:(NSURLConnection*)connection {
    // download completed successfully, we can do what we like with the downloadData object now
    // ...
}

-(void) connection:(NSURLConnection*)connection didFailWithError:(NSError*)error {
    // handle failure with the grace of Audrey Hepburn.  probably log something, too
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...