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 デバイスの両方で再現可能です。サーバー管理者権限にアクセスできます。