問題タブ [asihttprequest]
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.
iphone - ASIHTTP リクエストがログに記録されましたが、requestFailed が呼び出されませんでした
私は持っている
私が私の要求をするとき、私はする
ログにこれを取得しています:
2010-08-11 16:52:11.861 MyProject[11720:207] リクエストがデータのダウンロードを終了しました 2010-08-11 16:52:11.861 MyProject[11720:207] リクエストが失敗しました: (gdb)
しかし、私のログステートメント
が呼び出されていません。何か案は?
乾杯
iphone - ASIFormDataRequest-認証が失敗した後もファイルのPOSTが継続しているようです
ASIFormDataRequestを使用してhttp認証済みURLにデータを投稿しています。
認証が失敗し、認証ダイアログデリゲートが呼び出された場合でも、アップロードの進行状況は完全に進行しているように見えます。
したがって、これらの場合:
1)ユーザーのクレデンシャルはまだキーチェーンに保存されていません2)キーチェーンに保存されているユーザーのクレデンシャルは認証に失敗します(期限切れなど)
私はこの振る舞いを見ます:
- リクエストがサーバーに届き、401拒否エラーがクライアントに返されるのがわかります
- uploadFailedデリゲートは呼び出されません。
- ファイルがまだネットワーク接続にプッシュされているように見えるため、プログレスバーデリゲートがゆっくりといっぱいになります。完全にアップロードする時間と一致する時間で完了します
- 組み込みの認証ダイアログモーダルが表示されます
- ユーザーが正しいクレデンシャルを入力します
- プログレスバーデリゲートのリセット
- アップロードが再開されます-投稿データがサーバーで受信されると、プログレスバーがいっぱいになります
- 終了したデリゲートメソッドが期待どおりに呼び出されます。
- この2回目の試行で、すべてが正常にアップロードされました
これが私の操作をセットアップする場所です:
認証に失敗したら[リクエストキャンセル]を発行する必要があると思いますが、どこでやればいいのかわかりません。
サーバーが401を返した後でも、POSTがチャグアウトすることが予想される動作ですか?
これに対処する既存の質問へのガイダンスまたはポインタに感謝します。
iphone - 非同期 ASIHTTPRequest を開始する NSOperationQueue に NSOperation を追加する
そのため、バックグラウンド スレッドでデータをダウンロードするすべての REST 呼び出しを実行して、UI の応答性を維持しようとしています。
NSOperationQueue を含むビューコントローラーがあります。NSOperation のサブクラスであるインポーター クラスのインスタンスを作成します。インポーターの main() メソッド内で、ASIHTTPDataRequest を設定しています。リクエストを作成したら、リクエストを開始します。
問題: リクエストで「startAsynchronous」を呼び出してリクエストを開始すると、問題が発生しました。デリゲート コールバックが呼び出されることはありません。リクエストが開始され、そのデータがダウンロードされますが、デリゲート コールバック メソッドが呼び出されることはありません。
私の解決策:リクエストを同期的に開始すると、すべてが正常に機能するようです(つまり、コールバックなど)。これは正しい解決策ですか?
同期呼び出しが機能するのに、非同期呼び出しが機能しないのはなぜですか? Apple の「TopSongs」サンプルを参考にして、インポーター クラスをモデル化しています。
iphone - ASIHTTPRequestダウンロードキャッシュの問題-日付をキャッシュに保存/ロードできません
ASIHTTP(http://allseeing-i.com/ASIHTTPRequest/How-to-use#using_a_download_cache)を使用してデータをキャッシュに保存しようとしています。何が間違っているのかわかりませんが、データをキャッシュに保存していないようです。次のコードの出力は次のとおりです。
コードは次のとおりです。
誰かがこれを達成する方法についてのコードスニペットを教えてもらえますか?
ありがとう!
-------------------------------------------------- ---------------------
新しいコードの改訂:
これは[requeststartSynchronous]でのみ機能します。非同期メソッドを試してみると、この関数は呼び出されません。
iphone - マルチスレッド アプリケーションでの NSManagedObjectContext への一般的なアプローチ
ここで、NSManagedObjectContext とマルチスレッド アプリケーションに関する多くの投稿を読みました。また、CoreDataBooks の例を調べて、個別のスレッドが独自の NSManagedObjectContext を必要とする方法と、保存操作がメインの NSManagedObjectContext とマージされる方法を理解しました。この例は良いものですが、アプリケーション固有すぎることもわかりました。私はこれを一般化しようとしていますが、私のアプローチが正しいかどうか疑問に思っています。
私のアプローチは、現在のスレッドの NSManagedObjectContext を取得するための汎用関数を持つことです。この関数はメイン スレッドの NSManagedObjectContext を返しますが、別のスレッド内から呼び出された場合は新しいものを作成します (またはキャッシュからフェッチします)。それは次のようになります。
メインスレッドから呼び出された場合、保存操作は簡単です。他のスレッドから呼び出された保存操作は、メイン スレッド内でマージする必要があります。そのために、私は一般的なcommit
機能を持っています:
の通知によって呼び出された場合、contextDidSave:
関数でマージを実行しcommit
ます。
最後に、これを使用して NSManagedObjectContext のキャッシュをクリーンアップします。
これはコンパイルされ、機能しているように見えますが、競合状態のためにスレッドの問題が厄介になる可能性があることはわかっています。このアプローチに問題がある人はいますか?
また、サーバーから一部のデータをフェッチし、iPhone のストアを更新して挿入する非同期要求 (ASIHTTPRequest を使用) のコンテキスト内からこれを使用しています。リクエストの完了後に NSThreadWillExitNotification が起動されないようで、その後のリクエストには同じスレッドが使用されます。これは、同じ NSManagedObjectContext が同じスレッドの個別の要求に使用されることを意味します。これは問題ですか?
iphone - ASIHTTPRequest: デリゲート メソッドの呼び出し中にエラーが発生しました
ASINetworkQueue のインスタンスがあり、ASIHTTPRequest のインスタンスをキューに追加しました。その間、キューと各リクエストにデリゲート メソッドを設定しました。
ループ内でリクエストをキューに追加し、ループの外側に呼び出し [submittingReportQueue go] を追加しました。
以下は私のデリゲートメソッドです:
ただし、ASIHTTPRequest.m は次のコード ブロックで例外をスローします。
[呼び出し setArgument:&data atIndex:3]; 例外をスローします。エラー メッセージは 'NSInvalidArgumentException' です。理由: '*** -[NSInvocation setArgument:atIndex:]: index (3) out of bounds [-1, 2]'
私は何を間違えましたか?
ありがとう `
iphone - ASIHTTPRequest 非同期の別のデリゲート?
独自のデリゲートだけを含む新しいファイルを作成して、独自の非同期エンディングを持つ ASIHTTPRequest を作成するにはどうすればよいですか[request setDelegate:self];
? [request setDelegate:AlternateDelegate];
AlternateDelegate デリゲートを参照する
iphone - ASIHTTPRequest で削除要求を送信するにはどうすればよいですか?
ASIHTTPRequest を使用して、POST/GET などの代わりに DELETE を送信する方法を知りたいです。ありがとう!
iphone - iPhoneアップロード画像速度アドバイス
写真を撮り、jpeg品質のサイズ(10〜100%)を調整してから、ASIFormDataRequest(ASIHTTPRequest実装の一部)を使用してサーバーに送信できるアプリがあります。これはネットワーク接続上では問題なく動作しますが、セルラー ネットワーク上では、失敗する前に (品質が 10% であっても) 5 ~ 10 分間、画像ポスト データの送信を試みているように見えます。
これを Twitter および Facebook アプリが提供する画像のアップロード (30 秒から 1 分ほどかかる) と比較すると、これは正確には理想的ではありません。データ転送を高速化する方法、または問題がどこにあるかを正確に確認できるように監視する方法について、誰かアドバイスをいただけないでしょうか。
今夜、Mac ラップトップに戻ったら、私が何をしているかを正確に示すコード スニペットを投稿します。
編集: コード スニペットは次のとおりです。
.. code コメントは、ビューの上に「アップロード」イメージを貼り付ける場所です。呼び出しを非同期ではなく同期にすることができると思いますが、パフォーマンスが向上すると思いますか? 後の段階で、アップロード中にユーザーが他のビットを実行できるようにしたい場合に備えて、そのままにしておきました。
どんなアドバイスも素晴らしいでしょう:)
ありがとう、
ダン
編集:
ジェシー、コメントありがとう - [request setUploadProcessDelegate:self] を追加し、送信されているデータを監視するために必要なメソッドを入れたところ、すべて正常に送信されているように見えました。
JosephH - 提案どおり「[ASIHTTPRequest setShouldThrottleBandwidthForWWAN:YES]」を追加し、「set_time_limit(0);」も追加しました。PHPアップロードスクリプトに(タイムアウトの場合)、データはセルラーネットワークを介して送信および取得されているようです。ファイル圧縮などをいじって、最高の品質に最適なものを見つけています。ATM 0.3 はかなり高品質のようで、およそ 30 秒ほどで転送されます。これが私が探していたものです!
0.0-1.0 ではなく 10-100 を使用していたため、圧縮率の設定も間違っていたので、それも修正しました。
私の問題を解決するためにあなたの迅速な助けをありがとう!!
iphone - iPhoneでキューをダウンロード
iPhoneでダウンロードキューを実装するための最良の方法は何ですか?これはASIHTTPRequestライブラリで実行できますか?