Сұрау жіберу және жауап алу

Менде менің веб-сервис деп атайтын менің серверімде жұмыс істейтін php-код бар. Бұл деректерді бүтін сан мәніне жіберу процестерін өңдейді.

  NSString *requestURL=[NSString stringWithFormat:@"%@?u=%@&  p=%@&platform=ios",url,txtUserName.text,txtPassword.text];

Жаңарту түсініктемесі: Менің серверімде PHP файлым бар. 3 аргумент қабылдайды және менің пайдаланушыларымды тіркейді және 1 (мысалы, қайталану үшін 2) мәнін қайтарады .Мен серверге келесідей сұрау жіберу керек:

url="http://smwebtech.com/Pandit/web_service/signup.php?u=Test&p=password&platform=ios"

Бұл сұрауды серверге қалай жібере аламын және серверден қайтару мәнін аламын ба?

1
Мәселеңізді біраз түсіндіруге бола ма? Серверге HTTP сұрауды қалай жасау керектігін білгіңіз келе ме?
қосылды автор Kristofer Sommestad, көзі
Сіз кодтаудың қандай түрін сервер жағында json немесе direct xml арқылы жасай аласыз.
қосылды автор Nimit Parekh, көзі

3 жауаптар

NSURLConnection қолдануға болады. NSURLConnectionDataDelegate протоколын қолданыңыз және NSURLConnection класын пайдаланыңыз.

-(void) requestPage
{
    NSString *urlString = @"http://the.page.you.want.com";
    NSURL *url = [NSURL URLWithString:urlString];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLCacheStorageAllowed timeoutInterval:20.0f];


    responseData = [[NSMutableData alloc] init];
    connection = [[NSURLConnection connectionWithRequest:request delegate:self] retain];
    delegate = target;
}


-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{   
    if ([response isKindOfClass:[NSHTTPURLResponse class]])
    {
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*) response; 
        //If you need the response, you can use it here
    }
}

-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [responseData appendData:data];
}

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    [responseData release];
    [connection release];
}

-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    if (connection == adCheckConnection)
    {
        NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

        //You've got all the data now
        //Do something with your response string


        [responseString release];
    }

    [responseData release];
    [connection release];
}
6
қосылды
Қосылым деректерді бір уақытта қайтаруға кепілдік бермейді. responseData </​​code> осы ақпаратты барлық деректерді қайтару аяқталғанға дейін жинайды және менің мысалда оны оны жолға айналдырады.
қосылды автор James Webster, көзі
Соңғы мән - connectionDidFinishLoading ішінде қайтарылған мән және жол ретінде бұл жолды түрлендіретін мән
қосылды автор James Webster, көзі
Мен редакция жасамадым, әйтпесе редакцияланған сілтеме болады. Сіз тек қана жеткілікті түрде төменге айналдырған жоқсыз ба? ;)
қосылды автор James Webster, көзі
Сіздің кодыңызда responseData дегеніміз не?
қосылды автор sohel14_cse_ju, көзі
Менің сұрағымда жаңартуды тексеріңіз.
қосылды автор sohel14_cse_ju, көзі
иә әдіс DidFinish алдыңғы жаңартуларыңызда болмады ... оны ойлап тапқаныңызда ... жауап беру және жоба бойынша басшылыққа ...
қосылды автор sohel14_cse_ju, көзі
Өкінішке орай, мен аяқтағаннан кейін кейбір өзгерістер жасадым, содан кейін ол жұмыс істеді ...
қосылды автор sohel14_cse_ju, көзі
  1. visit HTTPRequest and setup it in your project according to given instructins.
  2. TouchJSON - download and put it in your project.
  3. below are the methods you can use for sending request, and getting response.

      -(void) SendAsyncReq:(NSString *)urlString 
       {
    
    
    NSLog(@"URL IS: %@",urlString);
    NSURL *url = [NSURL URLWithString:[urlString     stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    
    
    ASIHTTPRequest *request1 = [ASIHTTPRequest requestWithURL:url];
    
    [request1 setDelegate:self];
    
    
        [request1 startAsynchronous];
    }
    
      /// THIS METHOD WILL BE CALLED IF REQUEST IS COMPLETED SUCCESSFULLY
    
     - (void)requestFinished:(ASIHTTPRequest *)response
    {
    NSData *responseData = [response responseData];
    
    CJSONDeserializer *jsonDeserializer = [CJSONDeserializer   deserializer];
    
    NSDictionary *resultsDictionary = [jsonDeserializer  deserializeAsDictionary:responseData error:nil];
    
    NSLog(@"Response is: %@",resultsDictionary);
    
    
        }
    
     /// THIS METHOD WILL BE CALLED IF REQUEST IS FAILED DUE TO SOME REASON.
    
    - (void)requestFailed:(ASIHTTPRequest *)response
    {
    NSError *error = [response error];
    NSLog(@"%d", [error code]);
    if([error code] !=4)
    {
        NSString *errorMessage = [error localizedDescription];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                            message:errorMessage
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alertView show];
        [alertView release];
    }
    
    
    
    }
    

сыныпта #import «CJSONDeserializer.h» және #import «ASIHTTPRequest.h» импорттауыңыз қажет. Бұл көмектесетініне сенемін.

0
қосылды
Мен url-ді аштым және HTML-ны жай ғана басып шығарамын .. бұл жұмыс жасамайды .. сіз xml немесе JSON жасауыңыз керек. iphone соңында u'll талдау. Жауапта жауап алу үшін кодты ұсындым және json-ды талдау.
қосылды автор waheeda, көзі
Пожалуйста, менің сұрағымда жаңартуды қараңыз.
қосылды автор sohel14_cse_ju, көзі

Серверге HTTP сұрауларын жасау әдісін іздесеңіз, онда сізге көмектесетін бірнеше жүйе бар. Соңғы уақытқа дейін ASIHTTPRequest маған ұнады, бірақ өкінішке орай, ол тоқтатылды.

Google's API Client Library is also a good option, as well as a number of others suggested by the creator of ASIHTTPRequest.

Сізге бастау үшін құжаттардың көп болуы керек.

EDIT: To make your specific request with ASIHTTPRequest, do the following in a class with the protocol ASIHTTPRequestDelegate:

/**
 * Make a request to the server.
 */
- (void) makeRequest {
   //compile your URL string and make the request
    NSString *requestURL = [NSString stringWithFormat:@"%@?u=%@&  p=%@&platform=ios", url, txtUserName.text, txtPassword.text];

    NSURL *url = [NSURL URLWithString:requestURL];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request startAsynchronous];
}

/**
 * Handle the response from the previous request.
 * @see ASIHTTPRequestDelegate
 */
- (void) requestFinished:(ASIHTTPRequest*)request {
    NSString *responseString = [request responseString];
   //do whatever you need with the response, i.e. 
   //convert it to a JSON object using the json-framework (https://github.com/stig/json-framework/) 
}
0
қосылды
Пожалуйста, менің сұрағымда жаңартуды қараңыз.
қосылды автор sohel14_cse_ju, көзі
Кейбір үлгі кодымен поштаны жаңарттым.
қосылды автор Kristofer Sommestad, көзі