Iphone web service app

Hi, I am writing an iphone application that exchanges a web service. Therefore, I have two text fields, the program should read the value of the first text field and publish the web service, and then after the response from the web service it needs to write a second text field. But in the second text box he writes nothing. it prints null on the console. Why is this getting? Thanks.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { nodeContent = [[NSMutableString alloc]init]; } return self; } - (IBAction)login:(id)sender { NSLog(@"PASSWORD text: %@",password.text); if ([password.text length]==0) { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"WebService" message:@"Supply Data in text field" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"ok",nil]; [alert show]; [alert release]; } else { NSString *soapFormat = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" "<soap:Body>\n" "<CelsiusToFahrenheit xmlns=\"http://tempuri.org/\">\n" "<Celsius>%@</Celsius>\n" "</CelsiusToFahrenheit>\n" "</soap:Body>\n" "</soap:Envelope>\n",password.text]; NSLog(@"The request format is %@",soapFormat); NSURL *locationOfWebService = [NSURL URLWithString:@"http://www.w3schools.com/webservices/tempconvert.asmx"]; NSLog(@"web url = %@",locationOfWebService); NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc]initWithURL:locationOfWebService]; NSString *msgLength = [NSString stringWithFormat:@"%d",[soapFormat length]]; [theRequest addValue:@"text/xml" forHTTPHeaderField:@"Content-Type"]; [theRequest addValue:@"http://tempuri.org/CelsiusToFahrenheit" forHTTPHeaderField:@"SOAPAction"]; [theRequest addValue:msgLength forHTTPHeaderField:@"Content-Length"]; [theRequest setHTTPMethod:@"POST"]; //the below encoding is used to send data over the net [theRequest setHTTPBody:[soapFormat dataUsingEncoding:NSUTF8StringEncoding]]; NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:theRequest delegate:self]; if (connect) { webData = [[NSMutableData alloc]init]; startActivityIndicator; } else { NSLog(@"No Connection established"); } // [self performSegueWithIdentifier:@"logindevam" sender:self]; } } - (IBAction)sendkeyboard:(id)sender { [sender resignFirstResponder]; } -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { [webData setLength: 0]; } -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [webData appendData:data]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"ERROR with theConenction"); [connection release]; [webData release]; } -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"DONE. Received Bytes: %d", [webData length]); NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; NSLog(@"%@",theXML); xmlParser = [[NSXMLParser alloc]initWithData:webData]; [xmlParser setDelegate: self]; //[xmlParser setShouldResolveExternalEntities: YES]; [xmlParser parse]; // [connection release]; //[webData release]; //[resultTable reloadData]; stopActivityIndicator; } //xml delegates - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { [nodeContent appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; } - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { if ([elementName isEqualToString:@"CelsiusToFahrenheitResult"]) { NSLog(@"nodeContent: %@",nodeContent); // it becomes null finaldata = nodeContent; NSLog(@"finaldata: %@",finaldata); // it becomes null NSLog(@"username.text: %@",username.text); // it becomes null username.text = finaldata; } username.text = finaldata; } 
+4
source share
1 answer

Code::

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"DONE. Received Bytes: %d", [webData length]); NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; NSLog(@"%@",theXML); theXML = [theXML stringByReplacingOccurrencesOfString:@"&lt;" withString:@"<"]; theXML = [theXML stringByReplacingOccurrencesOfString:@"&gt;" withString:@">"]; theXML = [theXML stringByReplacingOccurrencesOfString:@"&amp;" withString:@"&"]; NSString *str, *result; result = [[[NSString alloc] initWithFormat:@""] autorelease]; NSArray *array=[theXML componentsSeparatedByString:@"<CelsiusToFahrenheitResult>"]; for(int i=1;i<[array count];i++) { str=[array objectAtIndex:i]; NSRange ranfrom=[str rangeOfString:@"</CelsiusToFahrenheitResult>"]; result =[str substringToIndex:ranfrom.location]; } NSLog(@"\n -> %@", result); t2.text = result; // Your Second textfield [connection release]; } 

This will definitely work. Thanks.

+1
source

All Articles