私が受け取っているエラーコード:
Error Domain=ASIHTTPRequestErrorDomain Code=1 「接続に失敗しました」 UserInfo=0x6993280 {NSUnderlyingError=0x6d520c0 「操作を完了できませんでした。(kCFErrorDomainCFNetwork エラー 306.)」
オプションはありませんが、ASIHTTPRequest です。私はすでにアプリを開発しており、代替手段を使用できません。
現在、iOS バージョン 5.1.1 を使用しています。
iOS 3 用の同じコードを使用して 1 年前にアプリを開発しましたが、正常に動作していました。現在、同じコードは機能しません。これは、最新の iOS バージョンで発生すると思われます。
このコードは、プロキシ設定がなくても適切に機能しますが、プロキシ設定では機能しません。
_method = [NSStringstringWithFormat:@"http://%@%@", _settings.ServerLocation, _settings.WebServicePath];
NSLog(_method);
NSString *soapMessage = [NSStringstringWithFormat:@"%@%@%@",
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"
"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n"
"<soap:Body>\n",
parameters,
@"</soap:Body>\n"
"</soap:Envelope>\n"];
//NSLog(@"soapMessage : %@",soapMessage);
NSURL *url = [NSURLURLWithString:_method];
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
if(_settings.IsProxy)
{
[request setProxyHost:_settings.HostIP];
[request setProxyPort:(NSInteger)_settings.Port];
}
constchar *utfString = [soapMessage UTF8String];
NSMutableData *req = [NSDatadataWithBytes:utfString length:strlen(utfString)];
[request addRequestHeader:@"Content-Type"value:@"text/xml; charset=utf-8"];
[request addRequestHeader:@"Content-Length"value:[NSStringstringWithFormat:@"%d", [soapMessage length]]];
[request addRequestHeader:@"SOAPAction"value:action];
if(_settings.IsProxy)
{
[request addRequestHeader:@"Host"value:_settings.HostIP];
}
[request setPostLength:[soapMessage length]];
[request setRequestMethod:@"POST"];
[request setPostBody:req];
[request setTimeOutSeconds:5];
[request setNumberOfTimesToRetryOnTimeout:1];
if(_settings.IsProxy)
{
if([_settings.Usernamelength] > 0)
{
[request setProxyUsername:_settings.Username];
}
if([_settings.Passwordlength] > 0)
{
[request setProxyPassword:_settings.Password];
}
}
//[request setValidatesSecureCertificate:NO];
[request setDelegate:self];
[request startAsynchronous];