gpt4 book ai didi

ios - 在 ios 7 xcode 5.0.2 中使用 .Net web 服务

转载 作者:行者123 更新时间:2023-11-29 03:23:02 25 4
gpt4 key购买 nike

我创建了一个接受参数 (int DishId) 并返回具有以下属性的 XML 文件的 .net Web 服务:

<Dish xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<Menu_Id>3</Menu_Id>
<Dish_Name>DNN</Dish_Name>
<Dish_Description>DD</Dish_Description>
<Dish_Price>1555</Dish_Price>
<Dish_Ingredients>DI</Dish_Ingredients>
<Dish_Picture>images/smile.png</Dish_Picture>
<Dish_Category>3</Dish_Category>
</Dish>

因此,在对如何在 iOS Xcode 5.0.2 中使用 Web 服务进行一些搜索之后。我遵循 SOAP 方法。我点击了这个链接:Consuming XML Web Services in iPhone Applications

我创建了一个新页面,其中包含标签、文本字段(“下面代码中的 dishNumber”)、按钮、事件指示器。

因此,对于按钮操作,我创建了以下代码:

- (IBAction)buttonClicked:(id)sender
{
NSString *soapMsg = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\
<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/\">\
<soap:Body>\
<GetDish xmlns=\"http://www.tempuri.org/\">\
<dishId>%@</dishId>\
</GetDish>\
</soap:Body>\
</soap:Envelope>",
dishNumber.text
];

//---print it to the Debugger Console for verification---
NSLog(soapMsg);

NSURL *url = [NSURL URLWithString: @"http://urllocalhost/mywebservice.asmx"];

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

//---set the headers---
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMsg length]];

[req addValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[req addValue:@"http://www.tempuri.org/GetDish" forHTTPHeaderField:@"SOAPAction"];
[req addValue:msgLength forHTTPHeaderField:@"Content-Length"];

//---set the HTTP method and body---
[req setHTTPMethod:@"POST"];
[req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];

[activityIndicator startAnimating];

conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];

if (conn)
{
webData = [NSMutableData data];
}
}

-(void) connection:(NSURLConnection *) connection didReceiveResponse:(NSURLResponse *) response
{
[webData setLength: 0];
}

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


-(void) connectionDidFinishLoading:(NSURLConnection *) connection
{
NSLog(@"DONE. Received Bytes: %d", [webData length]);

NSString *theXML = [[NSString alloc] initWithBytes:[webData mutableBytes]
length:[webData length]
encoding:NSUTF8StringEncoding];
//---shows the XML---
NSLog(theXML);

[activityIndicator stopAnimating];
}

所以运行这段代码后,一切都显示良好。但这里的问题是系统只能从我的 XML 文件返回整数属性,例如 Menu_Id、dish_Price、dish_category,其值全部为 0。

这是点击按钮后通过 NSLog 获取的消息:

2013-12-30 11:24:00.608 ws[6468:70b] soap message :<?xml version="1.0" encoding="utf-8"?><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/"><soap:Body><GetDish xmlns="http://www.tempuri.org/"><dishId>3</dishId></GetDish></soap:Body></soap:Envelope>

2013-12-30 11:24:01.489 ws[6468:70b] DONE. Received Bytes: 420

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetDishResponse xmlns="http://tempuri.org/"><GetDishResult><Menu_Id>0</Menu_Id><Dish_Price>0</Dish_Price><Dish_Categorie>0</Dish_Categorie></GetDishResult></GetDishResponse></soap:Body></soap:Envelope>

有人可以帮忙解决这个问题吗?提前致谢。

最佳答案

您是否考虑过使用工具为您的 Xcode 项目生成代理类?使用代理类将抽象 xml 与您的服务来回穿梭。

我对这些特定工​​具没有任何经验,但希望它们能让您更轻松地使用您的服务:

wsdl2objc - https://code.google.com/p/wsdl2objc/

Sudzc(在线实用程序)- http://www.sudzc.com/

Wsdl2Code(在线实用程序)- http://www.wsdl2code.com/pages/home.aspx

关于ios - 在 ios 7 xcode 5.0.2 中使用 .Net web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20839449/

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