rest web services in iphone

后端 未结 3 1099
一个人的身影
一个人的身影 2020-12-10 23:13

I have a problem now. I need to pass an transactionID and an user password to a rest service and it is suppose to return me a true/false value (in XML format). However, it i

相关标签:
3条回答
  • 2020-12-10 23:39

    Consider using NSURLConnection which has a callback for the result and also a callback to get detailed error details. It als doesn't execute on the UI thread (doesn't hang UI during the request).

     NSURL *url = [NSURL URLWithString:@"http://www.mysite.com"];
    
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    
     [request setHTTPMethod:@"GET"];
     [[NSURLConnection alloc] initWithRequest:request delegate:self];
    

    Then you can implement the delegate methods to get the error, the data and other details:

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        [responseData appendData:data];
    }
    
    - (void) connectionDidFinishLoading:(NSURLConnection *)connection {
        [connection release];
    
        NSString* responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
        NSLog(@"result: %@", responseString);
    
        [responseString release];
    }
    
    - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
          NSLog(@"error - read error object for details");
    }
    
    0 讨论(0)
  • 2020-12-10 23:57

    You might try using "initWithContentsOfURL:encoding:error:" instead and check "error". Also, use Charles or other http sniffer and compare results to a straight browser request ( did you check results in a browser?)

    0 讨论(0)
  • 2020-12-11 00:01
    .h:
        NSMutableData *responseData;
    
    .m:
        - (void)load {
            NSURL *myURL = [NSURL URLWithString:@"https://10.124.128.93:8443/axis2/services/C3WebService/completeWithdrawal  Transaction?transactionId=%@&password=%@", _transactionID.text, _userPassword.text];
            NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL
                                                     cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                 timeoutInterval:60];
    
        [[NSURLConnection alloc] initWithRequest:request delegate:self];
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
        responseData = [[NSMutableData alloc] init];
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
        [responseData appendData:data];
    }
    
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        [responseData release];
        [connection release];
        [textView setString:@"Unable to fetch data"];
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection 
    {
        NSLog(@"Succeeded! Received %d bytes of data",[responseData
                          `enter code here`                             length]);
        NSString *txt = [[[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding] autorelease];
    
    }
    
    0 讨论(0)
提交回复
热议问题