API அதே தொலைபேசியின் Safari இல் பதிலளிக்கிறது, ஆனால் பயன்பாட்டின் கோரிக்கை நேரம் முடிகிறது. இந்த இடைவெளி பொதுவாக சுரங்கப்பாதை அல்ல: உள் சேவையை அழைக்கும் பயன்பாடு சாதாரண HTTPS கோரிக்கையைச் செய்கிறது, சாதனத்தில் ஏற்கனவே உள்ள VPN அந்தக் கோரிக்கைக்கு பாதை உள்ளதா என்பதை மட்டும் தீர்மானிக்கிறது. பயன்பாட்டில் இரண்டாவது சுரங்கப்பாதையை எழுதுவது ஒரு தயாரிப்பு முடிவு, நேரம் முடிவதற்கான பழுது அல்ல. பின்வருபவை தோல்வியை அது நிகழும் இடத்தின் அடிப்படையில் வகைப்படுத்துகிறது, பயன்பாட்டிடம் ஏற்கனவே உள்ள பிழை மேற்பரப்பைப் பயன்படுத்தி.

சுரங்கப்பாதையிலிருந்து அல்ல, பிழையிலிருந்து தொடங்குங்கள்

URLSession போக்குவரத்துத் தோல்விகளை NSError மதிப்புகளாக NSURLErrorDomain இல் தெரிவிக்கிறது, மேலும் குறியீடே மிக மலிவான ஆதாரம். எந்த கட்டமைப்பையும் மாற்றுவதற்கு முன் அந்தக் குறியீட்டை தோல்வியடையும் ஹோஸ்ட்பெயர் மற்றும் பணியின் கடந்த நேரத்துடன் பதிவு செய்யுங்கள். நேரம் முடிதல், பெயர்த் தோல்வி மற்றும் நம்பிக்கைத் தோல்வி திரையில் ஒரே மாதிரி தெரிகின்றன, மேலும் மூன்று வெவ்வேறு பழுதுகள் தேவை. முதலில் வகைப்படுத்தி, பின்னர் அந்த வகுப்பின் பகுதியைப் படியுங்கள்.

பணி அளவீடுகள் அடுத்த கேள்விக்கு பதிலளிக்கின்றன, இணைப்பு எப்போதாவது நிறுவப்பட்டதா என்பது, இது பாதையே இல்லாத கோரிக்கையை சேவையகம் மிகத் தாமதமாக பதிலளித்த கோரிக்கையிலிருந்து பிரிக்கிறது. இவற்றில் எதுவும் சுரங்கப்பாதையை மாற்ற வேண்டியதில்லை; கோரிக்கையின் சொந்த நோயறிதலை நீங்கள் படிக்கக்கூடிய இடத்தில் அச்சிட வேண்டும்.

பெயர் தீர்வு வேறு எதையும் விட முன்பே தோல்வியடைகிறது

எடுத்துக்காட்டாக api.corp.example போன்ற குறுகிய அலுவலகப் பெயர் பொதுவாக தொலைபேசியில் இல்லாத தேடல் டொமைனைச் சார்ந்துள்ளது, எனவே பயன்பாடு கட்டிடத்திற்குள் மட்டுமே உள்ள பெயரைத் தீர்க்கிறது. NSURLErrorCannotFindHost அதன் கையொப்பம். முழு ஹோஸ்ட்பெயரும் VPN நிறுவும் எந்த தீர்வியின் மூலமும் தீர்க்கப்பட வேண்டும், தேடல் டொமைன் உத்தரவாதம் இல்லாதபோது பயன்பாடு முழுமையாக தகுதிபெற்ற வடிவத்தைக் கோர வேண்டும். பெயரை முகவரியாக மாற்றுவதும் சான்றிதழ் சரிபார்ப்புகளை அணைப்பதும் தோல்வியை சரிசெய்வதற்குப் பதிலாக நகர்த்துகிறது.

தனிப்பட்ட DNS பதிவும் அதே பெயருக்கு வழங்கப்பட்ட சான்றிதழும் ஆதரிக்கப்படும் இணை. மற்ற அனைத்தும் பயனர்களை அடையும் ஒரு தீர்வாகும்.

நேரம் முடிதல் பெயரின் கேள்வி அல்ல, பாதையின் கேள்வி

NSURLErrorTimedOut பெயர் தீர்க்கப்பட்டு எதுவும் பதிலளிக்கவில்லை என்று பொருள், இது பாதை, பாக்கெட் கொள்கை அல்லது சேவையை சுட்டிக்காட்டுகிறது. சுரங்கப்பாதை ஒவ்வொரு பயன்பாட்டிற்கும் ஒதுக்கப்படும்போது, அதே சேவையகத்தை அடையும் மற்றொரு பயன்பாடு உங்கள் பில்டைப் பற்றி எதுவும் சொல்லாது, ஏனெனில் அந்த மேப்பிங் பகிரப்படுவதில்லை. நீங்கள் இயக்கும் தொகுப்பு அந்த ஒதுக்கீட்டிற்குள் உள்ளதா என்பதைச் சரிபார்க்கவும், பின்னர் சேவைப் பாதை அதற்கு அனுமதிக்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்கவும். ஒதுக்கீட்டிற்கு வெளியே நிறுவப்பட்ட மேம்பாட்டு பில்ட் முழுவதுமாக சுரங்கப்பாதைக்கு வெளியே இருக்கலாம், உடைந்த API போலத் தோன்றலாம்.

உலாவி ஒப்பீடு சாதனத்தில் ஏதோ ஒரு பயன்பாட்டிற்கு பாதை உள்ளதைக் காட்டுகிறது. அது உங்கள் பில்டுக்கு உள்ளது என்று ஒருபோதும் நிரூபிக்காது, அதனால் இரு சோதனைகளும் தனித்தனியாக நடத்தப்பட வேண்டும்.

நம்பிக்கைத் தோல்விகள் சான்றிதழில் உள்ள பெயரைப் பற்றியவை

NSURLErrorServerCertificateUntrusted அதன் கீழே உள்ள TLS பிழையுடன் சேர்ந்து சங்கிலி அல்லது அடையாளச் சரிபார்ப்பு தோல்வியடைந்தது என்று பொருள். உள் CA சாதனத்தில் நம்பகமானதாக இருக்க வேண்டும், மற்றொரு ஹோஸ்ட்பெயருக்கு வழங்கப்பட்ட சான்றிதழ் எவ்வளவு வலையமைப்பு மறுசீரமைப்புக்குப் பிறகும் தவறானதே. Apple இன் App Transport Security வழிகாட்டுதல் இந்த URL ஏற்றும் இணைப்புகளுக்கு தொடர்ந்து பொருந்தும், சாதாரண HTTP சேவையைச் சுற்றியுள்ள சுரங்கப்பாதை அந்தச் சேவையை முனையிலிருந்து முனை வரை பாதுகாப்பாக்காது.

அடையாளத்தையோ நம்பிக்கை நங்கூரத்தையோ சரிசெய்து விதிவிலக்குப் பட்டியலை காலியாக வைத்திருங்கள். தன்னிச்சையான ஏற்றுதலுக்கான பொதுவான விதிவிலக்கு மேம்பாட்டின் போது தோல்வியை மறைத்து, பின்னர் ஒவ்வொரு பயனருக்கும் அதை அப்படியே விட்டுவிடும்.

HTTP நிராகரிப்பு பயன்பாட்டிற்குரியது, வலையமைப்பிற்கு அல்ல

முடிந்த கைக்குலுக்கலுக்குப் பிறகு 401 அல்லது 403 என்றால் கோரிக்கை வந்து சேர்ந்தது, சேவை அதை நிராகரித்தது என்று பொருள், எனவே மீதமுள்ள கேள்வி கணக்கு, டோக்கன் பார்வையாளர், நோக்கம் அல்லது விசை. நிலைக் குறியீட்டையும் ஹோஸ்ட்பெயரையும் பதிவு செய்யுங்கள், ஒருபோதும் கேரியர் டோக்கனையோ பதில் உடலையோ அல்ல. அந்த நேரத்தில் சுரங்கப்பாதை தனது வேலையைச் செய்கிறது, மேலும் வலையமைப்பு மாற்றங்கள் உண்மையான பழுதைத் தாமதப்படுத்துகின்றன.

அட்டவணை முனையத்தின் அருகில் வைக்க வேண்டிய வகைப்படுத்தல்: பயன்பாடு உண்மையில் தெரிவிக்கக்கூடிய ஒவ்வொரு தோல்விக்கும் ஒரு வரிசை. குறியீட்டைப் படிப்பதற்கு முன் அச்சிடுங்கள், ஏனெனில் நீங்கள் தேர்ந்தெடுக்கும் வரிசை எந்தப் பகுதியில் வேலை செய்வீர்கள் என்பதைத் தீர்மானிக்கிறது.

Where it failsWhat the app seesFirst check
name resolutionNSURLErrorCannotFindHost (-1003)resolve the fully qualified name from the device itself
no path, or no answerNSURLErrorTimedOut (-1001)is this bundle inside the per-app mapping, and is the service path allowed
TLS trustNSURLErrorServerCertificateUntrusted (-1202)does the certificate name match the host, and is the internal CA trusted
service refusalHTTP 401 or 403 after a completed handshakeaccount, token audience, scope or key

ஒவ்வொரு வரிசையும் அதற்குக் கீழே உள்ளதை விட மலிவாகச் சோதிக்கப்படுகிறது, ஒவ்வொன்றும் அதே கோரிக்கையின் வேறு அடுக்கை விலக்குகிறது. ஒரு வரிசை பொருந்தும் வரை அட்டவணையில் கீழே செல்லுங்கள், பின்னர் வலையமைப்பை மாற்றுவதை நிறுத்துங்கள்.

தொடர்புடைய கட்டுரைகள்