我正在尝试使用 Apple 提供的 SimpleFTPSample 代码将 .txt 文件上传到服务器。错误是
发送
流打开错误
错误:操作无法完成。(kCFErrorDomainCFNetwork 错误 200。)
错误出现在- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
方法中,具体为:
case NSStreamEventErrorOccurred: {
NSError *theError = [aStream streamError];
[self stopSendWithStatus:@"Stream open error"];
NSLog(@"The error: %@", [theError localizedDescription]);
} break;
(Apple 提供的 PutController.m 的第 251 行,可在此处找到)
我看过这个问题和其他几个喜欢它的人,我遇到了同样的问题。我还尝试使用该问题中的解决方案来纠正该问题,但没有成功。这包括使用以下方法切换主动/被动流属性:
[self.networkStream setProperty:(id)kCFBooleanFalse forKey:(id)kCFStreamPropertyFTPUsePassiveMode];
服务器地址似乎正确。它确实需要凭据,并且它们是正确的。它确实允许我通过浏览器登录。我还有一个 android 应用程序可以上传到同一个地方。提供的简单 FTP 代码可以:
- 在服务器上创建目录
- 在服务器上创建一个 0 字节的文件
- 从默认地址检索文件(Apple 在 NASA ftp 服务器上提供图像的 URL,可以使用该应用程序下载和查看)
但是,它不能:
- 从服务器下载文件(打开流错误)
- 向创建的文件添加数据(打开流错误)
我正在使用 Xcode 4.6.3 和 iOS SDK 6.1。这在模拟器和 iPhone 4 设备上都可以重现。我有权访问服务器管理员权限。