gpt4 book ai didi

iphone 网络服务应用程序

转载 作者:可可西里 更新时间:2023-11-01 06:10:52 25 4
gpt4 key购买 nike

您好我正在编写与 Web 服务通信的 iphone 应用程序,所以我有两个文本字段,程序需要读取第一个文本字段的值并发布 Web 服务,然后在 Web 服务响应后它需要编写第二个文本字段。但是在第二个文本字段中它没有写任何东西。它在控制台上打印 null。为什么会变成这样?谢谢。

 - (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;
}

最佳答案

代码::

-(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];
}

它肯定会起作用。谢谢。

关于iphone 网络服务应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com