2013-09-15 3 views
2

Я столкнулся с NSURLConnection, я использовал его раньше, просто по запросу, и получая данные и разбирая их. Однако на этот раз веб-разработчик разработал запросы GET и POST.NSURLConnection ПОЛУЧИТЬ ЗАПРОС

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

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"URL"] 
                 cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData 
                timeoutInterval:10]; 

[request setHTTPMethod: @"GET"]; 

NSError *requestError; 
NSURLResponse *urlResponse = nil; 


NSData *response1 = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError]; 

также несколько других, которые я видел.

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

Данные, которые я получил от моего веб-разработчика

SOAP 1.2 


POST /DEMOService/DEMO.asmx HTTP/1.1 
Host: projects.demosite.com 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

и в ответ будут GET и POST

Ниже приведен пример HTTP GET запрос и ответ. Показанные заполнители должны быть заменены фактическими значениями.

 GET /DEMOService/DEMO.asmx/VerifyLogin?username=string&password=string&AuthenticationKey=string HTTP/1.1 


    Host: projects.demosite.com 

Я хорошо известно делегатов NSURLConnections, которые после ..

#pragma mark NSURLConnection Delegate Methods 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
// A response has been received, this is where we initialize the instance var you created 
// so that we can append data to it in the didReceiveData method 
// Furthermore, this method is called each time there is a redirect so reinitializing it 
// also serves to clear it 
_responseData = [[NSMutableData alloc] init]; 

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
// Append the new data to the instance variable you declared 
[_responseData appendData:data]; 
} 

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse*)cachedResponse { 
// Return nil to indicate not necessary to store a cached response for this connection 
return nil; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
// The request is complete and data has been received 
// You can parse the stuff in your instance variable now 

} 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
// The request has failed for some reason! 
// Check the error var 
} 

Единственное, чем я застреваю IS

Как написать запрос, где у меня есть аргументы прохождения, в запросе GET или POST.

Благодаря

ответ

7

Если ваши аргументы будут отправлены в самом URL (например, как часть URL-пути или строки запроса), то вам просто необходимо включить их в аргументе NSURL. Например, вы могли бы иметь следующее:

NSString *urlString = [NSString stringWithFormat:@"https://hostname/DEMOService/DEMO.asmx/VerifyLogin?username=%@&password=%@&AuthenticationKey=%@", 
         username, 
         password, 
         authenticationKey]; 
NSURL *url = [NSURL URLWithString:urlString]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url 
                 cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData 
                timeoutInterval:10]; 

где username, password и authenticationKey локальные переменные установить в другом месте.

Ваш ответ с сервера хранится в данных, содержащихся в экземпляре NSData, возвращенном -[NSURLConnection sendSynchronousRequest:returningResponse:error:].

Так что в вашем примере ваш ответ выше будет храниться в переменной response1. И вы можете преобразовать это в строку и/или проанализировать ее по мере необходимости.

+0

Я получил вашу мысль, теперь, когда я получу ответ, который придет с сервера ????? – Duaan

+0

Я только что отредактировал свой ответ, см. Добавленные абзацы. Но в основном ваш ответ хранится в возвращаемом NSData. (И BTW, пожалуйста, подумайте о повышении, если это будет полезно! Спасибо :) –

+0

возвращает NULL дорогой.Я обязательно вернусь, так как моя проблема будет решена дорого :) – Duaan

Смежные вопросы