1

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 is consistently returning me (null).. I am totally lost some one please help.

    NSString *urlString = [NSString stringWithFormat:@"https://10.124.128.93:8443/axis2/services/C3WebService/completeWithdrawal  Transaction?transactionId=%@&password=%@", _transactionID.text, _userPassword.text];

    NSURL *url = [[NSURL alloc] initWithString:urlString];
    NSString *result = [[NSString alloc] initWithContentsOfURL:url];


    NSLog(@"%@",result );

My result is constantly returning me null. How do i continue from here?

bryanmac
  • 38,941
  • 11
  • 91
  • 99
Luck Yong
  • 111
  • 3
  • 10
  • [This](http://stackoverflow.com/questions/2005448/how-to-use-nsxmlparser-to-parse-parent-child-elements-that-have-the-same-name/2005630#2005630) will give you the proper idea about the parsing. – alloc_iNit Sep 01 '11 at 11:54

3 Answers3

4
.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];

}
alok chauve
  • 582
  • 5
  • 8
3

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");
}
bryanmac
  • 38,941
  • 11
  • 91
  • 99
  • no problem. Also, there's other frameworks like RestKit that handle more of this problem. check it out. – bryanmac Sep 01 '11 at 22:23
  • hey Bryanmac... i got the "error - read error object for details" message.. still unable to connect... do u know what might be the problem? realli appreciate it thanks.. – Luck Yong Sep 04 '11 at 14:59
  • Hey Luck, did you read all the properties on the NSError like reason a nd localizedDescription? They may offer clues. Also, there's a tool called Charles Proxy which intercepts and displays more details on http requests. that may help as well. – bryanmac Sep 04 '11 at 18:48
1

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?)

ax123man
  • 578
  • 5
  • 17