小さなバグ:CFNetwork内部エラー:URLConnectionLoader.cpp:304または289
Small Bug Cfnetwork Internal Error
突然、空が薄暗くなります...
プロジェクトに登場 31483: CFNetwork internal error (0xc01a:/BuildRoot/Library/Caches/com.apple.xbs/Sources/CFNetwork_Sim/CFNetwork-808.2.16/Loading/URLConnectionLoader.cpp:304)
エラーが表示されるということは、ネットワークがリソースエラーへのリンクを要求していることを意味します。私は2つのことを言いたい:
1.このような多くの警告、このコードはプロジェクトの通常の操作には影響しませんが、クラッシュの問題ではなく、何もないように見えますが、実際の卵が痛いです...しかし、乙女座がこれらのことを見て目の前、本当に見苦しい、我慢できない…
2.この種の問題は通常、正式な環境では発生せず、テスト環境などでのみ発生します。結局のところ、製品に関係なく、公式環境サーバー上のリソースは間違いなく最も完全です。 。
それからそれを解決し、それをオンラインでチェックしてください、問題の解決策はこれを言うことです:これとAFNetWorking3.x
関連。次の解決策を作成できます。
image.pnginfo.plistを変更します
AppTransportのセキュリティ設定の下にNSExceptionDomainsが追加されました
NSExceptionRequiresForwardSecrecy:いいえ
NSIncludesSubdomains:はい
NSExceptionAllowInsecureHTTPLoads:はい
しかし、このように対処しようとすると...何もしませんでした。慎重な検索とトラブルシューティングは、AFNetworkの問題ではないことが判明し、SDWebImageの使用によって引き起こされた問題です。これらのエラーはすべて、対応するリンクのSDWebImageです。画像のURLリソースを使用すると、に対応する応答がありません。対応するサーバー上の画像リソース。
URLパスリンクの画像リソースが存在しない場合、エラー警告CFNetwork内部エラーが表示され、サーバーとのリンクが中断され、画像リクエストはサーバーからのデータを要求できません。
無効なSSL証明書または自己作成(自己署名)証明書とSDWebImageを使用する場合、SDWebImageでオプション「SDWebImageAllowInvalidSSLCertificates」を使用してhttpイメージ(httpsイメージではない)を取得します。プロトコル(httpまたはhttps)はSDWebImageによって自動的に認識されます。このエラーが発生します。ただし、cer証明書が有効であれば、SDWebImageは正常に機能すると思います。
解決
1.自己パッケージ化XXWebImageManager
画像リクエストメソッドを変更するラッパーラッパークラスで、画像のリクエストモードSDWebImageOptions
2つの異なる処理方法に設定します。
1.1要求プロトコルヘッダーは
http
契約、SDWebImageOptions
設定SDWebImageRetryFailed
(0に相当するか、デフォルトでは書き込まれません)
1.2リクエストプロトコルヘッダーは
https
契約、SDWebImageOptions
設定SDWebImageAllowInvalidSSLCertificates
、https証明書が自己署名されているか無効であるため、イメージのロード時にSSL証明書の検証をキャンセルします(SD公式このモードについてのコメント:
/ **信頼できないSSL証明書を許可できるようにします。テスト目的に役立ちます。 生産には注意して使用してください。 /
SDWebImageAllowInvalidSSLCertificates = 1<< 7)
2.自己カプセル化XXWebImageManager
クラスでは、次を使用して画像要求メソッドが変更されます:sd_setImageWithURL: placeholderImage: completed:
それを置き換えるにはsd_setImageWithURL: placeholderImage:
メソッド、completed
コールバックUIImage *image
画像をロードするかどうかを決定するために空であるかどうか。
しかし、この方法では十分ではありませんAlthough the CFNetwork error still occurs, but the connection will not break any more.
CFNetworkエラーは引き続き表示されますが、リンク要求はすぐには中断されません。したがって、モード1の方が優れています。
at SDWebImage
プロセスの開始時にラッパーまたはマネージャーのレイヤーをラップしない場合、それを処理するのにもう少し手間がかかります。それから、これから、カプセル化のレイヤーを実行します。画像リクエスト!結局のところ!SDWebImage
これはプロジェクトの下部にある3者間フレームワークです。最上層は、後で置き換えられるように、カスタムカプセル化された画像フレームワークであることが望ましいです。SDWebImage
for YYWebImage
他のフレームワークを待つときは、ラッパークラスを処理するだけでよく、N個のビジネスクラスを処理する必要はありません。
一般的に、すべてのサードパーティフレームワークリソースは、通常、トップレベルの処理サービスを提供するためにラッパーのレイヤーをカプセル化する必要があります。この小さなアーキテクチャのアイデアは、将来の多くの開発作業を容易にします。
何か問題があれば、みんなで私を正して一緒に進んでください。
参照リンク: https://stackoverflow.com/questions/42036246/cfnetwork-internal-error-urlconnectionloader-cpp304