views:

371

answers:

0

I have oracle database and using webservice i want to insert some records in to it So i created webservice in asp.net as follows

 public bool PickPill(string Me_id, string Mem_device_id, string Test_datetime, string Creation_id, string PillBayNo)
    {
        string Hed_seq_id = Hed_seq_Id();
        bool ResultHED = InsHealthEData(Hed_seq_id, Mem_device_id, Me_id, Test_datetime, Creation_id);
        bool ResultHET = InsHealthETest(Hed_seq_id, PillBayNo, Test_datetime, Creation_id);

        if (ResultHED == ResultHET == true)
            return true;
        else
            return false;

    }

this function did all data insertion trick for me i tested this service on the local mechine with ip address http:72.44.151.178/PickPillService.asmx then, I see an example on how to attach asp.net web service to iphone apps http://www.devx.com/wireless/Article/43209/0/page/4 then i created simillar code in xcode which has 2 files

  1. ConsumePillServiceViewController.m
  2. ConsumePillServiceViewController.h file

Now, Using Designer of xcode i created 5 textboxes(Me_id,Mem_device_id,Test_datetime,Creation_id,PillBayNo) with all parameters hardcode as our service demands then modify my ConsumePillServiceViewController.h file as follows

@interface ConsumePillServiceViewController : UIViewController {
 //---outlets---
  IBOutlet UITextField *Me_id;
  IBOutlet UITextField *Mem_device_id;
  IBOutlet UITextField *Test_datetime;
  IBOutlet UITextField *Creation_id;
  IBOutlet UITextField *PillBayNo;
 //---web service access---
    NSMutableData *webData;
    NSMutableString *soapResults;
    NSURLConnection *conn;

}
@property (nonatomic, retain) UITextField *Me_id;
@property (nonatomic, retain) UITextField *Mem_device_id;
@property (nonatomic, retain) UITextField *Test_datetime;
@property (nonatomic, retain) UITextField *Creation_id;
@property (nonatomic, retain) UITextField *PillBayNo;
- (IBAction)buttonClicked:(id)sender;
@end

and 
ConsumePillServiceViewController.m as follows

#import "ConsumePillServiceViewController.h"

@implementation ConsumePillServiceViewController
@synthesize Me_id;
@synthesize Mem_device_id;
@synthesize Test_datetime;
@synthesize Creation_id;
@synthesize PillBayNo;

- (IBAction)buttonClicked:(id)sender {
NSString *soapMsg = 
 @"<?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/\"&gt;"
 "<soap:Body>"
"<PickPill xml1ns=\"http://tempuri.org/\"&gt;";
NSString *smMe_id=
[soapMsg stringByAppendingString:
[NSString stringWithFormat:
@"<Me_id>%@</Me_id>",Me_id.text]];

 NSString *smMem_device_id=
 [smMe_id stringByAppendingString:
[NSString stringWithFormat:
 @"<Mem_device_id>%@</Mem_device_id>",Mem_device_id.text]];

NSString *smTest_datetime=
 [smMem_device_id stringByAppendingString:
 [NSString stringWithFormat:
  @"<Test_datetime>%@</Test_datetime>",Test_datetime.text]];

NSString *smCreation_id=
 [smTest_datetime stringByAppendingString:
[NSString stringWithFormat:
 @"<Creation_id>%@</Creation_id>",Creation_id.text]];

NSString *smPillBayNo=
 [smCreation_id stringByAppendingString:
[NSString stringWithFormat:
 @"<PillBayNo>%@</PillBayNo>",PillBayNo.text]];

NSString *smRestMsg=
 [smPillBayNo stringByAppendingString:
@"</PickPill>"
"</soap:Body>" "</soap:Envelope>"];

 soapMsg=smRestMsg;

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


 NSURL *url = [NSURL URLWithString:   //create a URL load request object using instances :
      @"http://72.44.151.178/PickPillService.asmx"];//of the NSMutableURLRequest and NSURL objects
 NSMutableURLRequest *req = 
 [NSMutableURLRequest requestWithURL:url];



 //opulate the request object with the various headers, such as Content-Type, SOAPAction, and Content-Length. 
 //You also set the HTTP method and HTTP body
 NSString *msgLength = 
 [NSString stringWithFormat:@"%d", [soapMsg length]];
 [req addValue:@"text/xml; charset=utf-8"  
forHTTPHeaderField:@"Content-Type"];
 [req addValue:@"http://tempuri.org/PickPill" 
forHTTPHeaderField:@"SOAPAction"];
 [req addValue:msgLength 
forHTTPHeaderField:@"Content-Length"];
 //---set the HTTP method and body---
 [req setHTTPMethod:@"POST"];
 [req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];



 conn = [[NSURLConnection alloc] initWithRequest:req delegate:self]; //establish the connection with the web service, 
 if (conn) {  //you use the NSURLConnection class together with the request object just created
  webData = [[NSMutableData data] retain];//webData object use to receive incoming data from the web service
 }    

}//End of button clicked event





-(void) connection:(NSURLConnection *) connection //Recive response
didReceiveResponse:(NSURLResponse *) response {
 [webData setLength: 0];
}
-(void) connection:(NSURLConnection *) connection //Repeative call method and append data to webData
 didReceiveData:(NSData *) data {
 [webData appendData:data];
}

-(void) connection:(NSURLConnection *) connection//If error occure error should be displayed  
  didFailWithError:(NSError *) error {
 [webData release];
    [connection release];
}


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

    [connection release];
    [webData release];
}



- (void)didReceiveMemoryWarning {
 // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

 // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
 // Release any retained subviews of the main view.
 // e.g. self.myOutlet = nil;
}


- (void)dealloc {
 [Me_id release];
 [Creation_id release];
 [Mem_device_id release];
 [Test_datetime release];
 [PillBayNo release];
    [soapResults release];
    [super dealloc];
}

@end

I did all things as shown in the website and when i built application it successfully built but in the debuggin window i see

(gdb) continue
2010-03-17 09:09:54.595 ConsumePillService[6546:20b] <?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/"&gt;&lt;soap:Body&gt;&lt;PickPill xml1ns="http://tempuri.org/"&gt;&lt;Me_id&gt;A00000004303&lt;/Me_id&gt;&lt;Mem_device_id&gt;1011&lt;/Mem_device_id&gt;&lt;Test_datetime&gt;03/13/2010 07:34:38</Test_datetime><Creation_id>Hboxdata</Creation_id><PillBayNo>2</PillBayNo></PickPill></soap:Body></soap:Envelope>
(gdb) continue
(gdb) continue
(gdb) continue
2010-03-17 09:10:05.411 ConsumePillService[6546:20b] DONE. Received Bytes: 476
2010-03-17 09:10:05.412 ConsumePillService[6546:20b] <?xml version="1.0" encoding="utf-8"?><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"&gt;&lt;soap:Body&gt;&lt;soap:Fault&gt;&lt;faultcode&gt;soap:Server&lt;/faultcode&gt;&lt;faultstring&gt;Server was unable to process request. ---&gt; One or more errors occurred during processing of command.

ORA-00936: missing expression</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>

It should return me true if all things are ok What is this ORA-00936 error all about

as it is not releted with webservice

Please help me solving this problem

Thanks in advance, Vaibhav Deshpande