Xcode没有调用asp.net webservice

时间:2010-03-17 13:16:36

标签: objective-c xcode oracle ora-00936

我有oracle数据库并使用webservice我想在其中插入一些记录 所以我在asp.net中创建了webservice,如下所示

 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;

    }

这个功能为我做了所有数据插入技巧我用ip地址在本地机器上测试了这个服务 HTTP:72.44.151.178/PickPillService.asmx 然后, 我看到了如何将asp.net Web服务附加到iphone应用程序的示例 http://www.devx.com/wireless/Article/43209/0/page/4 然后我在xcode中创建了simillar代码,其中包含2个文件

  1. ConsumePillServiceViewController.m
  2. ConsumePillServiceViewController.h文件
  3. 现在, 使用xcode的Designer我创建了5个文本框(Me_id,Mem_device_id,Test_datetime,Creation_id,PillBayNo),所有参数都是hardcode作为我们的服务需求 然后修改我的ConsumePillServiceViewController.h文件,如下所示

    @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/\">"
     "<soap:Body>"
    "<PickPill xml1ns=\"http://tempuri.org/\">";
    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
    

    我做了网站上显示的所有内容,当我构建应用程序时,它已成功构建 但是在调试窗口中我看到了

    (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/"><soap:Body><PickPill xml1ns="http://tempuri.org/"><Me_id>A00000004303</Me_id><Mem_device_id>1011</Mem_device_id><Test_datetime>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"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>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>
    

    如果一切正常,它应该归还我 什么是ORA-00936错误

    因为它没有与webservice相关

    请帮我解决这个问题

    提前致谢, Vaibhav Deshpande

0 个答案:

没有答案