我写了一个WS,它提供的功能之一就是头像(上传和服务器)。唯一的问题是,每当我尝试使用 SDWebImage (UIButton+SDWebImage) 访问一个时,我都会在完成处理程序中收到上述错误。完整错误为:(错误域=NSURLErrorDomain代码=406“操作无法完成。(NSURLErrorDomain错误406。)”) 奇怪的是,服务器从未被触及(登录以验证这一点)!有什么想法可能导致此问题以及如何解决它吗?
PS 如果我 NSLog 该 URL,然后将其复制并粘贴到浏览器中,它会完美运行,因此它适用于 SDWebImage 或 iOS。
编辑有问题的代码:
[btn setBackgroundImageWithURL:url forState:UIControlStateNormal placeholderImage:[UIImage imageNamed:@"user-empty.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (error) {
NSLog(@"error loading image:%@",error);
return;
}
NSLog(@"image should be loaded");
dispatch_async(dispatch_get_main_queue(), ^{
[btn setBackgroundImage:image forState:UIControlStateHighlighted];
});
}];
至于 URL,我不想分享它,因为我们目前没有域名,而且我不想透露我客户服务器的 IP...我相信你明白,但这里是 url 减去正确的 ip(请注意,我必须添加空格来发布编辑内容,它们不在实际的 url 中): http://192.168.1.21/uploads/51078f979c966bde0b000009/avatar.png
这可能是我的 WS 的问题吗?关于标题什么的?我知道它会发回“image/png”的内容类型(如果有帮助的话),就像我说的那样,它在浏览器中完美运行。难道是ip而不是域名?
更新我们已经设置了域名,但仍然无法正常工作,因此这里有一个可以在浏览器中使用的链接,但不能在 SDWebImage 或 AFNetworking 中使用:http://communication.notitlabs.co/uploads/511db303367885c248000015/avatar.png
最佳答案
如果您确实遇到 HTTP 错误 406,read up on that here - 听起来像是 HTTP header 的问题。
不过,可以肯定的是,您需要查看 NSError 对象的 code
属性,并将其与 Foundations Constants Reference 中的这些错误代码之一进行匹配。 :
NSURLErrorUnknown = -1,
NSURLErrorCancelled = -999,
NSURLErrorBadURL = -1000,
NSURLErrorTimedOut = -1001,
NSURLErrorUnsupportedURL = -1002,
NSURLErrorCannotFindHost = -1003,
NSURLErrorCannotConnectToHost = -1004,
NSURLErrorDataLengthExceedsMaximum = -1103,
NSURLErrorNetworkConnectionLost = -1005,
NSURLErrorDNSLookupFailed = -1006,
NSURLErrorHTTPTooManyRedirects = -1007,
NSURLErrorResourceUnavailable = -1008,
NSURLErrorNotConnectedToInternet = -1009,
NSURLErrorRedirectToNonExistentLocation = -1010,
NSURLErrorBadServerResponse = -1011,
NSURLErrorUserCancelledAuthentication = -1012,
NSURLErrorUserAuthenticationRequired = -1013,
NSURLErrorZeroByteResource = -1014,
NSURLErrorCannotDecodeRawData = -1015,
NSURLErrorCannotDecodeContentData = -1016,
NSURLErrorCannotParseResponse = -1017,
NSURLErrorInternationalRoamingOff = -1018,
NSURLErrorCallIsActive = -1019,
NSURLErrorDataNotAllowed = -1020,
NSURLErrorRequestBodyStreamExhausted = -1021,
NSURLErrorFileDoesNotExist = -1100,
NSURLErrorFileIsDirectory = -1101,
NSURLErrorNoPermissionsToReadFile = -1102,
NSURLErrorSecureConnectionFailed = -1200,
NSURLErrorServerCertificateHasBadDate = -1201,
NSURLErrorServerCertificateUntrusted = -1202,
NSURLErrorServerCertificateHasUnknownRoot = -1203,
NSURLErrorServerCertificateNotYetValid = -1204,
NSURLErrorClientCertificateRejected = -1205,
NSURLErrorClientCertificateRequired = -1206,
NSURLErrorCannotLoadFromNetwork = -2000,
NSURLErrorCannotCreateFile = -3000,
NSURLErrorCannotOpenFile = -3001,
NSURLErrorCannotCloseFile = -3002,
NSURLErrorCannotWriteToFile = -3003,
NSURLErrorCannotRemoveFile = -3004,
NSURLErrorCannotMoveFile = -3005,
NSURLErrorDownloadDecodingFailedMidStream = -3006,
NSURLErrorDownloadDecodingFailedToComplete = -3007
关于iOS SDWebImage NSURLErrorDomain 在联系服务器之前就出现错误 406,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14591409/