如何使用NSURLConnection获得PHP回声


How can I get a PHP echo with NSURLConnection?

我能得到一些帮助吗?我绝望了。我有一个PHP脚本,它被发送参数,它做一些处理,然后使用echo输出结果。我用过

[[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"myPHPPathWithParameters"]] encoding:NSUTF8StringEncoding];

在过去,php作为NSSTRing来获取信息,它起到了作用,但现在不行了。它返回一个NULL NSString。无论如何,我认为正确的方法是实现NSURLConnection,因为它实现了用于监视连接进度的委托方法等。因此,我声明了一个静态的NSMutableData*receivedData,然后我使用iOS文档中的示例:

    NSURLRequest *req=[NSURLRequest 
                          requestWithURL:[NSURL URLWithString:@"http://myphp.php?parameters=paramteres"]
                          cachePolicy:NSURLRequestUseProtocolCachePolicy
                          timeoutInterval:30.0];
    NSURLConnection *con=[[NSURLConnection alloc] initWithRequest:req delegate:self];
    if (con)
        receivedData = [[NSMutableData data] retain];
    else 
        NSLog(@"Request failed to load.");

然后我实现委托方法(我还在self中声明NSURLConnectionDataDelegate):

    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    NSLog(@"RECEIVED DATA;");
    [receivedData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    NSLog(@"received response;");
    [receivedData setLength:0];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSLog(@"FINISHED;");
}

但是这些方法永远不会被调用!终端从不显示任何显示委托方法已执行的Log消息。据我所知,这个方法被调用,数据被附加到receivedData中,然后我必须在调用connectionDidFinishLoading方法后从receivedData中获取NSString。有什么建议吗?我也尝试过NSURLConnection中的同步请求类方法,但该方法得到了完整的HTML,我只想得到php的回声,并将其解析为NSString,以便在应用程序中使用:(

receivedData转换为字符串

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSString *myStringData = [[NSString alloc] initWithData:receivedData encoding:NSStringEncodingConversionAllowLossy];
}

然后打印字符串NSLog(@"MyString: %@", myStringData)