Opracowałem aplikację (dla IOS) napisaną w trybie macierzystym, która działa dobrze w sieciach IPV4. Niedawno firma Apple wysłała komunikat informujący, że moja aplikacja nie działała podczas testowania w sieci IPV6. Powiedzieli mi, że muszę je również dostosować do sieci opartych wyłącznie na IPV6.Jak wykonać wywołania API zgodne z IPV6 w reaktywnym języku natywnym za pomocą funkcji .fetch?
Pytanie brzmi, w jaki sposób mogę sprawić, że moje istniejące połączenia API będą kompatybilne z siecią IPV6?
Moje API wykorzystuje protokół https i jest wywoływane przez nazwę domeny, a nie przez surowy adres IP.
Próbkę pobieraniu nazwać używam to:
fetch(query,{
method: 'post',
headers: Utils.fetchHeaders('post')
})
.then(Utils.checkStatus)
.then(Utils.parseJSON)
.then(json => this._handleResponse(json))
.catch(error => {
this.setState({
votingError: 'Sorry, there was an error!',
loading: false
});
});
i punktem końcowym API jest w następującym formacie:
Każda pomoc mile widziana.
Wygląda na to, że mój punkt końcowy, czyli cyfrowa kropla oceanu, nie akceptuje połączeń z sieci IPV6. Chociaż moja domena ma przypisany adres IP IPv6. Wydaje się, że z kroplą pojawia się problem z siecią. Mówię do cyfrowego oceanu, aby rozwiązać problem. – meteorite
OK Myślę, że naprawiłem to, włączając obsługę IPV6 na moim serwerze, ale nie rozumiem, dlaczego muszę dokonać takiej modyfikacji. Dlaczego nie mogę połączyć się z serwerem IPV4 w sieci opartej tylko na IPV6? dowolny pomysł? – meteorite
Mam również wątpliwości, że interfejs API pobierania używa wewnętrznie NSURLSession. Dlaczego więc nie powinno to działać domyślnie? Facet, który sprawdził moją aplikację po stronie Apple, powiedział, że aplikacja działała, gdy przełączył się na sieć IPv4, ale nie działał w sieci tylko ipv6. Być może ich sieć nie tłumaczy IPP4 IP na IPV6 lub pobieranie faktycznie nie używa NSURLSession – meteorite