問題タブ [nsurlsession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
24288 参照

ios - iOS/Cocoa - NSURLSession - 基本的な HTTPS 認証の処理

[より多くの情報を提供するために編集]

(私はこのプロジェクトで AFNetworking を使用していません。将来的に使用する可能性がありますが、最初にこの問題/誤解を解決したいと考えています。)

サーバーのセットアップ

ここで実際のサービスを提供することはできませんが、次のような URL に従って XML を返すシンプルで信頼性の高いサービスです。

https://username:password@example.com/webservice

GET を使用して HTTPS 経由で URL に接続し、認証の失敗 (http ステータス コード 401) を確認したいと考えています。

Web サービスが利用可能であること、および指定されたユーザー名とパスワードを使用して URL から XML を正常に取得できること (http ステータス コード 200) を確認しました。これは、Web ブラウザー、AFNetworking 2.0.3、および NSURLConnection を使用して行いました。

また、すべての段階で正しい資格情報を使用していることも確認しました。

正しい資格情報と次のコードが与えられた場合:

上記のコードは機能します。サーバーに正常に接続し、http ステータス コード 200 を取得し、(XML) データを返します。

問題1

資格情報が無効な場合、この単純なアプローチは失敗します。その場合、完了ブロックは呼び出されず、ステータス コード (401) は提供されず、最終的にタスクはタイムアウトします。

試みられた解決策

NSURLSession にデリゲートを割り当て、次のコールバックを処理しています。

試行されたソリューションを使用する場合の問題 1

ivar _sessionFailureCount および _taskFailureCount の使用に注意してください。チャレンジ オブジェクトの @previousFailureCount プロパティが決して進められないため、これらを使用しています。これらのコールバック メソッドが何回呼び出されても、常にゼロのままです。

試行されたソリューションを使用する場合の問題 2

正しい資格情報を使用しているにもかかわらず (nil デリゲートでの使用が成功したことで証明されているように)、認証は失敗しています。

次のコールバックが発生します。

(NSError は NSErrorFailingURLKey も提供します。これは、URL と資格情報が正しいことを示しています。)

どんな提案でも大歓迎です!

0 投票する
1 に答える
727 参照

ios - 複数の NSURLSessionTask を整理する

Web サイトからファイルをダウンロードできる iOS アプリがあります。それらを管理するNSURLSessionクラスを作成しました。DownloadsこのDownloadsクラスにはNSMutableArray、オブジェクトを使用して現在および過去のすべてのダウンロードを追跡する がありDownloadItemます。私はこの設定に満足していません。

Downloads現在、すべてのダウンロードのデリゲートとしてクラスを持たなければなりません。NSURLSessionDownloadTaskそれぞれのデリゲートをDownloadItemオブジェクトに割り当てる方法がわかりません。Downloadsそのため、それをオブジェクトに割り当てたままにDownloadItemし、メッセージを転送する方法を決定する必要があります。

現在、これを行うには、で呼び出される NSMutableDictionary を作成しtasksDictionary、をキーとしてDownloads使用しtaskIdentifierます。

これは機能しているように見えますが、最も効率的な方法ではないようです。また、最初に作成された taskIdentifier が0、完了したタスクと最初のタスクの違いを識別するのが難しくなるのを見たことも心配しています。

これらのことを追跡するためのより良い方法はありますか? タスクに新しい代理人を割り当てる方法はありますか?

0 投票する
0 に答える
1577 参照

ios - バックグラウンド ダウンロードの無効な URL スキーム: 有効なスキームは http または https です

-[NSURLSessionBackgroundFetch start]アプリでのプッシュ通知の結果として、バックグラウンド フェッチのメソッドを使用しています。この方法は完全に正常に機能し、アプリはストアに正常にアップロードされました。しかし、ユーザーの 1 人が次のようなクラッシュに見舞われました。

バックグラウンド ダウンロードの無効な URL スキーム: (null)。有効なスキームは http または https です

このクラッシュが開発モードではなく本番モードで発生した理由を解決できません。また、ユーザーの 1 人だけがこのクラッシュを経験しました。

0 投票する
1 に答える
2201 参照

ios - NSURLSessionTask completionTask は、GCD を使用してメイン キューに呼び出しを取得しません

iOS 7 NSURLSession を使用して、RESTful サービスに対して単純な GET を実行しています。これは私がしたことです:

上記のコードはすべて正常に動作します。completionHandler はメイン キューで呼び出される必要があります。

ただし、これを GCD で使用すると、次のようになります。

今、私はそのコードをdispatch_get_main_queue()内で実行すると思いました。これは、セッションのdelegateQueueで指定された[NSOperationQueue mainQueue]と同じでなければなりません?? 最初のコード セットと同様に、Tt はメイン スレッドで効果的に実行されている必要があります。ただし、私が発見したのは、completionHandler が呼び出されないことです。GCDコードを削除すると、再び機能します。

誰もこれをやろうとしたことがありますか?これは機能するはずですか?または、作業がどこのキューにディスパッチされたかを誤解していますか?

0 投票する
1 に答える
1773 参照

php - NSURLSessionUploadTaskがファイルをphpスクリプトに渡さない

編集:わかりました、コンテンツタイプヘッダーを multipart/form-data に設定しましたが、違いはありません。私の元の質問は以下のとおりです。


これは、スタック オーバーフローに関する私の最初の質問です。正しくできていることを願っています。

最近スタンフォード コースのオンライン バージョンを修了したので、Objective-C だけを学んでいます。私はphpとhtmlについてほとんど何も知りません。私が使用しているphpスクリプトとhtmlは、ほとんどがチュートリアルからコピーされています。私には Obj-C の方が理にかなっています。

問題:

私はphpスクリプトを持っています。画像ファイルをアップロードします。サーバー上の同じフォルダーにある html ファイルから呼び出すと、正しく動作します。obj-c から呼び出されたときに同じスクリプトを動作させようとしています。実行されているようで、200 が返されます。obj-c は php を呼び出しますが、オンライン フォルダーにファイルが表示されません。

これは ios7 でのみ導入されたため、Web 上ではほとんどないようです。私が見つけた例はファイルのアップロードを扱っていません。それらはすべてダウンロードを扱っており、アップロードは似ていると言っているだけです。私が行ったことは、私が見つけたチュートリアルを満たすようです。

私が知っていることは次のとおりです。

  • サーバー上のhtmlファイルから呼び出されると、phpが機能し、ファイルがアップロードされます
  • obj-c は間違いなく php スクリプトを呼び出しています (obj-c を実行したときにスクリプトが呼び出されていることを確認するために、(file_put_contents を使用して) いくつかのログを php に書き込みました)
  • obj-c はほぼ確実に画像ファイルをアップロードしています (obj-c でデリゲート メソッドを使用すると、アップロードの進行状況が表示されます)
  • しかし、phpスクリプトはファイルを受信して​​いません(私がphpに書き込んだロギングは、obj-cから呼び出されたときに$ _FILESに値がないことを示しています.htmlから呼び出された場合、期待どおりに動作します)
  • 受信したヘッダーをログに記録するように php を編集したところ、画像ファイルの Content-Length が取得されます。

重要こと

  • 私はhtmlヘッダーを追加していません。私が見たチュートリアルでは、(NSURLSessionUploadTaskを使用して)そうしなければならないと言っています。NSURLSessionUploadTaskがこれを整理すると思いますか?それともこれは私の問題ですか?
  • [応答の説明] は 200 を返します。引用符: { URL: (PHP スクリプトの URL) } { ステータス コード: 200、ヘッダー { "Content-Type" = "text/html"; Date = "Thu, 16 Jan 2014 19:58:10 GMT"; "キープアライブ" = "タイムアウト = 5、最大 = 100"; サーバー = アパッチ; 「転送エンコーディング」= ID; } }
  • HTML は enctype="multipart/form-data" を指定していますが、おそらくこれを私の obj-c のどこかに組み込む必要がありますか?
  • これまでのところ、シミュレーターからのみ実行しています
  • どんな助けでも大歓迎です!ありがとう :)
  • 編集、以下のコードを編集して、元々持っていた [request setHTTPMethod:@"PUSH"] の代わりに [request setHTTPMethod:@"POST"] を表示しましたが、変更はありません。

これが目標Cです

これがサーバー上のPHPスクリプトです

同じスクリプトを呼び出すときに期待どおりに機能するhtmlファイルは次のとおりです

0 投票する
3 に答える
26538 参照

ios - NSBlockOperation とキューを使用した NSURLSession

NSURLConnection現在、ネットワークの大部分を使用しているアプリがあります。に移行したいのはNSURLSession、Apple がそれが進むべき道だと言っているからです。

私のアプリは、クラス メソッドNSURLConnectionを介して の同期バージョンを使用するだけです。+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)errorこれはNSBlockOperation実行中に行うNSOperationQueueため、メイン キューを不必要にブロックすることはありません。このようにすることの大きな利点は、操作を相互に依存させることができることです。たとえば、データを要求するタスクをログイン タスクの終了に依存させることができます。

内での同期操作のサポートは見たことがありませんNSURLSession。私が見つけることができるのは、それを同期的に使用することさえ考えていることで私を嘲笑し、スレッドをブロックするのは恐ろしい人であるという記事だけです。罰金。しかし、NSURLSessionTasks を相互に依存させる方法はありません。それを行う方法はありますか?

または、そのようなことを別の方法で行う方法についての説明はありますか?

0 投票する
0 に答える
230 参照

ios - iOS アプリ - asp.net Web アプリのユーザー認証

以下に正しい方法でアプローチしているかどうかについて、簡単な意見をいただければ幸いです。

ある友人から、彼のスタートアップ企業のためにアプリを作成するのを手伝ってもらえないかと尋ねられました。彼らは、asp.netアプリケーションのフレーバーを実行しているサーバーを持っています。

彼は、ユーザーが自分のアカウントにログインして管理できる iOS アプリを望んでいます。

NSURLSession と NSURLSessionDataTask をチェックしています。

これが私がそれを実現するために必要なものです:

[タスク再開] を使用してタスクを開始すると、タスクの「didReceiveChallenge」を受け取ります。そのとき、私は次のように答えます。

しかし、応答で返される Cookie に関して何かをする必要がありますか?

私はここで自分の要素からかなり外れているので、何かポインタをいただければ幸いです!

乾杯!

アダム