我正在创建此应用程序,它与我的Web服务器上的PHP脚本进行通信。
昨晚它工作得很好。但今天有两个连接没有得到回复。
我在浏览器中尝试过NSURL链接,效果很好。其中一个连接工作,但正如我说两个连接不起作用?
- (void) getVitsTitelByID:(int)id {
NSString *url = [NSString stringWithFormat:@"http://webserver.com /ivitserdk.php?function=gettitelbyid&id=%d", id];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:1.0];
connectionTitelByID = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
connectionDidReciveData:
if(connection == connectionTitelByID){
responseTitel = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
connectionDidFinishLoading:
if(connection == connectionTitelByID){
titelLabel.text = responseTitel;
}
我已经尝试过调试它了。
responseTitel似乎是(null)。
帮助将被定价:)
答案 0 :(得分:2)
didReceiveData可以被称为N(几次)次。将数据保存到可变数据缓冲区(将其排队),并在didFinish中将其读入字符串
模拟代码:
- (void) getVitsTitelByID:(int)identifier {
NSString *url = [NSString stringWithFormat:@"http://webserver.com/ivitserdk.php?function=gettitelbyid&id=%d", identifier];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:1.0];
connectionTitelByID = [[NSURLConnection alloc] initWithRequest:request delegate:self];
dataForConnectionTitelByID = [NSMutableData data];
[connectionTitelByID start];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if(!data.length) return;
if(connection == connectionTitelByID)
[dataForConnectionTitelByID appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if(connection == connectionTitelByID) {
id str = [[NSString alloc] initWithData:dataForConnectionTitelByID encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
dataForConnectionTitelByID = nil;
connectionTitelByID = nil;
}
}