Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将xml发送到服务器并在iOS中获取响应时出错_Ios_Objective C_Xml - Fatal编程技术网

将xml发送到服务器并在iOS中获取响应时出错

将xml发送到服务器并在iOS中获取响应时出错,ios,objective-c,xml,Ios,Objective C,Xml,自从过去三天以来,我面临着一个奇怪的问题 我正在以XML向服务器发送一个INSERT查询, 它自动插入记录,当我通过断点(一步一步)到达插入代码时,它会显示重复条目(主键)错误 我不知道它在哪里自动运行,我已经设置了断点,有些时候它工作得很好,但有些时候当我第一次通过我为设置的断点插入代码时,查询被发送、运行,数据库本身也被更新 任何地方的查询被发送两次,我不知道这一切发生在哪里 这就是我的工作方式 将XML发送到服务器的方法 -(void) SendXml { myQuery = [N

自从过去三天以来,我面临着一个奇怪的问题

我正在以XML向服务器发送一个INSERT查询, 它自动插入记录,当我通过断点(一步一步)到达插入代码时,它会显示重复条目(主键)错误

我不知道它在哪里自动运行,我已经设置了断点,有些时候它工作得很好,但有些时候当我第一次通过我为设置的断点插入代码时,查询被发送、运行,数据库本身也被更新

任何地方的查询被发送两次,我不知道这一切发生在哪里

这就是我的工作方式

将XML发送到服务器的方法

-(void) SendXml
{
    myQuery = [NSString stringWithFormat:@"INSERT INTO MyTable"
           " (cartid, customerid, agentid, ordersubmit)"
           " VALUES ('11', '111', '1111', '1')"];
    message = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
           "<XMLBody>"
           "<Head>"
           "<Document>"
           "<DocType>Query</DocType>"
           "<DocDate>%@</DocDate>"
           "</Document>"
           "<Login>"
           "<UserName>root</UserName>"
           "<Password>#######</Password>"
           "<Database>%@</Database>"
           "</Login>"
           "</Head>"
           "<Body>"
           "<Query>%@"
           "</Query>"
           "</Body>"
           "</XMLBody>",currentDate,myDBName,myQuery];
    URL = [NSURL URLWithString:@"http://www.myseverpath/database.php"];
    Request = [NSMutableURLRequest requestWithURL:URL];
    [Request setHTTPMethod:@"POST"];
    [Request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [Request setHTTPBody:[message dataUsingEncoding:NSUTF8StringEncoding]];
    NSError *Error = nil;
    NSLog(@"%@",message);
    uRLConnection = [[NSURLConnection alloc] initWithRequest:Request delegate:self];
    if (uRLConnection)
    {
        NSData *XmlFile = [ NSURLConnection sendSynchronousRequest:Request returningResponse: nil error: nil ];
        ErrorParsing=NO;
        NSString *Data = [[NSString alloc] initWithData:XmlFile encoding:NSASCIIStringEncoding];
        Xmldata = [Data dataUsingEncoding:NSUTF8StringEncoding];
        XmlParser = [[NSXMLParser alloc] initWithData:Xmldata];
        [XmlParser setDelegate:self];
        [XmlParser parse];
    }
    else
    {
        NSLog(@"Connection error...");
        NSLog(@"%@",Error);
    }

}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    CurrentElement = [elementName stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSString *Element = @"XMLBody";
    if ([CurrentElement isEqualToString:Element])
    {
        ElementValue = [[NSMutableString alloc] init];
    NSLog(@"Parsing started...");
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[ElementValue appendString:string];
    if ([CurrentElement isEqualToString:@"myTagName"])
    {
        result = string; // result from XML as how many rows are affected
    }
    else if ([CurrentElement isEqualToString:@"Message"])
    {
        error = string;
    }
    if ([error length] > 0)
    {
        UIAlertView *Alert = [[UIAlertView alloc] initWithTitle: @"Error" message: error delegate: self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [Alert show];
    }
}
-(void)SendXml
{
myQuery=[NSString stringWithFormat:@“插入MyTable”
(cartid、customerid、agentid、ordersubmit)
“值('11','111','1111','1')”];
消息=[NSString stringWithFormat:@“”
""
""
""
“查询”
"%@"
""
""
“根”
"#######"
"%@"
""
""
""
"%@"
""
""
“”,currentDate,myDBName,myQuery];
URL=[NSURL URLWithString:@”http://www.myseverpath/database.php"];
请求=[NSMutableUrlRequestRequestWithURL:URL];
[请求设置HttpMethod:@“POST”];
[RequestSetValue:@“application/xml;charset=utf-8”用于HttpHeaderField:@“Content Type”];
[请求setHTTPBody:[消息数据使用编码:NSUTF8StringEncoding]];
n错误*错误=nil;
NSLog(@“%@”,消息);
uRLConnection=[[NSURLConnection alloc]initWithRequest:Request委托:self];
如果(uRLConnection)
{
NSData*XmlFile=[NSURLConnection sendSynchronousRequest:Request returningResponse:nil错误:nil];
错误解析=否;
NSString*Data=[[NSString alloc]initWithData:XmlFile encoding:NSASCIIStringEncoding];
Xmldata=[datadatausingencoding:NSUTF8StringEncoding];
XmlParser=[[NSXMLParser alloc]initWithData:Xmldata];
[XmlParser setDelegate:self];
[XmlParser parse];
}
其他的
{
NSLog(@“连接错误…”);
NSLog(@“%@”,错误);
}
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName属性:(NSDictionary*)attributeDict
{
CurrentElement=[elementName stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString*元素=@“XMLBody”;
if([CurrentElement IsequalString:Element])
{
ElementValue=[[NSMutableString alloc]init];
NSLog(@“已开始解析…”);
}
}
-(void)解析器:(NSXMLParser*)解析器查找字符:(NSString*)字符串
{
[ElementValue appendString:string];
if([CurrentElement IsequalString:@“myTagName”])
{
result=string;//从XML中得出受影响的行数
}
else if([CurrentElement IsequalString:@“Message”])
{
错误=字符串;
}
如果([错误长度]>0)
{
UIAlertView*Alert=[[UIAlertView alloc]initWithTitle:@“错误”消息:错误委托:自取消按钮:@“确定”其他按钮:无,无];
[警报显示];
}
}
请告诉我哪里错了


希望你理解我的问题,并等待迅速的帮助……:(

我不知道为什么没有人尝试回答这个问题,甚至在评论部分没有任何建议。)(

幸运的是,我解决了这个问题,我在这里分享它

在上面的代码中,我只是注释掉这一行

//uRLConnection = [[NSURLConnection alloc] initWithRequest:Request delegate:self];
并将条件更改为:

if (true)
{
    NSData *XmlFile = [ NSURLConnection sendSynchronousRequest:Request returningResponse: nil error: nil ];
    ErrorParsing=NO;
    NSString *Data = [[NSString alloc] initWithData:XmlFile encoding:NSASCIIStringEncoding];
    Xmldata = [Data dataUsingEncoding:NSUTF8StringEncoding];
    XmlParser = [[NSXMLParser alloc] initWithData:Xmldata];
    [XmlParser setDelegate:self];
    [XmlParser parse];
}
现在它工作得很好……)