해당하는 URL로 서버에서 스트림 데이터를 읽으려고합니다. 현재 NSInputStream을 사용하여 데이터를 읽으려고합니다. 그러나 오류가 발생합니다. "오류 2 작업이 없습니다. 그런 파일이나 디렉토리가 없습니다. " 바이트로 데이터를 수신하는 웹 개발자는 그 데이터를 MemoryStream (byteData) [참고 : 웹 서비스는 .net으로 작성]와 같은 스트림으로 변환하고 나에게 반환했습니다. 그런 종류의 데이터를 읽는 방법은 무엇입니까, 크기가 0 바이트 인 파일을 가지고 AISHTTPRequest를 시도했습니다. NSURLConnction을 다시 시도했는데 크기가 0 바이트 인 파일을 얻었습니다. 이제 NSInputStream을 사용하고 있습니다. 시작시 언급 된 오류. 여기 NSInputStream 내 코드, 예 그럼 내가 어떻게 이런 종류의 데이터와 상호 작용해야하는 방법을 안내하는 경우 우리는 이러한 종류의 데이터를 읽을 수 있는지 여부를 나를 인도 해주십시오웹 서비스에서 스트림 유형의 데이터를 얻는 방법
는, 프론트 엔드로 아이폰 OS입니다이다. NSInputStream이 다음에 작성된 코드에서 문제를 해결하기위한 의도 된 방법 인 경우.
- (void)setUpStreamForFile {
NSString *urlStr = @"http://192.168.1.201/example/example.svc/example?parameter={\"DCU_DocId\":\"05e24018-b728-4ec8-9848-d6cae02bec95\"}";
// iStream is NSInputStream instance variable
iStream = [[NSInputStream alloc] initWithFileAtPath:urlStr];
[iStream setProperty:[NSDictionary dictionaryWithObjectsAndKeys:(id) kCFBooleanFalse, kCFStreamSSLValidatesCertificateChain, nil ] forKey:(NSString *) kCFStreamPropertySSLSettings];
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[iStream open];
}
- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
_data = [[NSMutableData alloc] init];
int bytesRead=0;
switch(eventCode) {
case NSStreamEventHasBytesAvailable:
{
if(!_data) {
}
uint8_t buf[20480];
unsigned int len = 0;
len = [(NSInputStream *)stream read:buf maxLength:20480];
if(len) {
[_data appendBytes:(const void *)buf length:len];
// bytesRead is an instance variable of type NSNumber.
//[bytesRead setIntValue:[bytesRead intValue]+len];
bytesRead = bytesRead +len;
NSLog(@"bytesRead:%d",bytesRead);
}
else {
NSLog(@"no buffer!");
}
break;
}
case NSStreamEventEndEncountered:
{
[stream close];
[stream removeFromRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
stream = nil; // stream is ivar, so reinit it
break;
}
case NSStreamEventErrorOccurred:
{
NSError *theError = [stream streamError];
UIAlertView *theAlert = [[UIAlertView alloc] initWithTitle:@"" message:[NSString stringWithFormat:@"Error %i: %@",[theError code], [theError localizedDescription]] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
NSLog(@"Error %i %@",[theError code], [theError localizedDescription]);
[theAlert show];
[stream close];
break;
}
case NSStreamEventOpenCompleted:
{
NSLog(@"EventOpen");
}
case NSStreamEventHasSpaceAvailable:
{
NSLog(@"EventHasSpac");
}
case NSStreamEventNone:
{
NSLog(@"EventNone");
}
}
}
iOS와 .Net 웹 서비스 간의 통신에 JSON을 사용하는 것이 좋습니다. 이것은 닷넷 개발자가 Base64와 같이 iOS 앱에서 읽을 수있는 JSON 형식의 바이트 스트림을 직렬화하도록합니다. – Lanorkin