对于Soap NSURLConnection,请确保您的应用程序支持IPv6networking,因为需要IPv6兼容性

我已经在AppStore中提交了我的应用程序,如果由于以下原因,他们会拒绝。

Hello, Thank you for providing this information. Upon further review, we were still unable to login to the app. Please note that apps are reviewed on an IPv6 network. Please ensure that your app supports IPv6 networks, as IPv6 compatibility is required. For information about supporting IPv6 Networks, refer to Supporting iPv6 DNS64/NAT64 Networks. For a networking overview, please see About Networking. Best regards, App Store Review 

我正在使用SOAP Envelope服务来使用它,

这是我的代码

 @property(retain,nonatomic)NSString *xmlString; @property(nonatomic,retain)NSMutableData *webResponseData; -(void)method_GetUpcomingLotteries { NSString *soapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:ns1=\"urn:Lottery.Intf-ILottery\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:enc=\"http://www.w3.org/2003/05/soap-encoding\">\n" "<env:Body>\n" "<ns1:GetUpcomingLotteries env:encodingStyle=\"http://www.w3.org/2003/05/soap-encoding\">\n" "<EntityID xsi:type=\"xsd:int\">2</EntityID>\n" "<Password xsi:type=\"xsd:string\">Smart@Winners</Password>\n" "<SortBy xsi:type=\"xsd:int\">0</SortBy>\n" "<limit xsi:type=\"xsd:int\">0</limit>\n" "</ns1:GetUpcomingLotteries>\n" "</env:Body>\n" "</env:Envelope>"]; NSURL *sRequestURL = [NSURL URLWithString:@"http://isapi.mekashron.com/soapclient/soapclient.php?"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:sRequestURL]; NSString *sMessageLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; [request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; [request addValue: @"urn:Lottery.Intf-ILottery/GetUpcomingLotteries" forHTTPHeaderField:@"SOAPAction"]; [request addValue: sMessageLength forHTTPHeaderField:@"Content-Length"]; [request setHTTPMethod:@"POST"]; [request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; NSLog(@"soapMessage===\n %@",soapMessage); NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if( theConnection ) { NSLog(@"hiii"); self.webResponseData = [NSMutableData data]; }else { NSLog(@"Some error occurred in Connection"); } } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSLog(@"Received Bytes from server: %lu", (unsigned long)[self.webResponseData length]); NSString * strXml = [[NSString alloc] initWithBytes: [self.webResponseData mutableBytes] length:[self.webResponseData length] encoding:NSUTF8StringEncoding]; NSLog(@"---- %@" ,strXml); } -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { [self.webResponseData setLength:0]; } -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [self.webResponseData appendData:data]; } -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { NSLog(@"Some error in your Connection. Please try again."); } 

我的问题 :

1)请告诉我是否需要更改我的方法,或者我必须更改服务器端以将API从IPv4传输到IPv6?

2)在ios9下使用SOAP方法代替NSURLConnection的IpV6

在WWDC 2015上,苹果宣布向iOS 9中的IPV6专用networking服务过渡。从2016年6月1日起,苹果已经强制要求该应用支持iPV6。

如果开发人员使用标准的networkingAPI,例如苹果提供的NSURLSession和CFNetwork API,他们不应该遇到任何问题。 否则,您将不得不将代码移到支持IPV6的API。

如果您正在寻找使用像AFNetworking一些标准的networking库。 根据这个网站 AFNetworking 3.0支持IPV6。

苹果有关于如何testingIPV6支持的文档。

Interesting Posts