Я программист .Net и новичок в приложениях для iPhone и Obj C.
Мое требование следующее.
Мне нужно приложение для iPhone, которое использует метод в службе .net WCF и отображает результаты в виде метки или текстового поля в iPhone.
У меня есть wcf для умножения 2 чисел. Когда я делал NSLog, он получал там результаты. Но мне нужно только значение, т.е. я даю 5 * 10 и мне нужно 50 в моем лейбле. Вместо этого он дает все материал ..
Пожалуйста, найдите мой код здесь.
файл h
#import <UIKit/UIKit.h>
@interface iServiceViewController : UIViewController {
UILabel *label;
NSMutableData *webData;
}
@property(nonatomic,retain) IBOutlet UILabel *label;
@end
файл m
#import "iServiceViewController.h"
@implementation iServiceViewController
@synthesize label;
// Implement viewDidLoad to do additional setup after loading the
view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
NSString *soapMessage = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<SOAP-ENV:Envelope \n"
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n"
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
"xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" \n"
"SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"
\n"
"xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"> \n"
"<SOAP-ENV:Body> \n"
"<GetProduct xmlns=\"http://tempuri.org/\">"
"<first>100</first><second>10</second>"
"</GetProduct>\n"
"</SOAP-ENV:Body> \n"
"</SOAP-ENV:Envelope>"];
NSURL *url = [NSURL
URLWithString:@"http://192.168.0.115:1010/Service1.svc"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest
requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d",
[soapMessage length]];
[theRequest addValue: @"text/xml; charset=utf-8"
forHTTPHeaderField:@"Content-Type"];
[theRequest addValue: @"http://tempuri.org/IService1/GetProduct"
forHTTPHeaderField:@"Soapaction"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [soapMessage
dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *theConnection = [[NSURLConnection alloc]
initWithRequest:theRequest delegate:self];
if(theConnection) {
webData = [[NSMutableData data] retain];
}
else {
NSLog(@"theConnection is NULL");
}
}
- (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 {
label.text = [NSString stringWithFormat:@"Connection failed: %@",
[error description]];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSLog(@"Data has been loaded");
//NSString *responseString = [[NSString alloc] initWithData:webData
encoding:NSUTF8StringEncoding];
//NSInteger *responseInt = [[NSInteger alloc] initWithData:webData
encoding:NSInteger];
NSString *responseString = [[NSString alloc] initWithData:webData
encoding:NSUTF8StringEncoding];
[webData release];
//label.text = responseString;
NSLog(responseString);
[responseString release];
}
- (void)dealloc {
[super dealloc];
}
@end
Мой вывод NSLOG
[Session started at 2011-04-21 12:04:48 +0300.]
2011-04-21 12:04:49.579 iService[1978:207] Data has been loaded
2011-04-21 12:04:49.580 iService[1978:207] <s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetProductResponse
xmlns="http://tempuri.org/"><GetProductResult>1000</GetProductResult></GetProductResponse></s:Body></s:Envelope>
-
Я попытался умножить 100 на 10, и я также получил результат. но как я могу напечатать только 1000 на моей этикетке или в любой торговой точке ..
Заранее спасибо ..
рэндзю