我遇到NSURLConnection
的问题。
我正在使用以下命令向服务器发送请求:
[[NSURLConnection alloc] initWithRequest:request delegate:self];
但我收到“连接超时”错误。
如果我使用Wi-Fi连接它可以正常工作。我的手机上有一个完整的3g网络,可以很快的速度访问其他应用程序和网站。
我无法理解为什么我的请求没有被发送到服务器。
请帮忙。
我刚试过:
[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES ];
但这也不起作用。
答案 0 :(得分:1)
是否有任何特定原因使用NSURLConnection,
我有类似的问题,能够使用NSURLRequest参考下面的代码
-(NSString *)sendFile:(NSString*)url File:(NSString*)pFileName Handler:(NSObject*) sender{
NSString *base64Data = [AppUtil compressAnd64EncodedString:pFileName];
NSMutableString* requestURL = [[NSMutableString alloc] init];
[requestURL appendString:url];
NSMutableString* requestBody = [[NSMutableString alloc] init];
[requestBody appendString:@"request="];
[requestBody appendString:@""];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: [NSString stringWithString:requestURL]]];
// assume we are going to have data of 100 kb
NSMutableString *pRequestBody = [[NSMutableString alloc]initWithCapacity:100*1024];
// append
[pRequestBody appendString:SOAP_START_PACKET];
[pRequestBody appendString:base64Data];
[pRequestBody appendString:SOAP_END_PACKET];
[request setHTTPMethod: @"POST"];
[request setValue:@"application/soap+xml" forHTTPHeaderField:@"content-type"];
[request setValue:@"utf-8" forHTTPHeaderField:@"charset"];
NSData *requestData = [NSData dataWithBytes: [pRequestBody UTF8String] length: [pRequestBody length]];
[request setHTTPBody: requestData];
[request setTimeoutInterval:HTTP_TIME_OUT];
NSError *error = nil;
NSURLResponse *response = nil;
debugLog<<" sending request "<<endl;
NSData *pData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
if(pData){
NSString *pRespString = [[[NSString alloc] initWithData:pData
encoding:NSUTF8StringEncoding] autorelease];
debugLog<<"Response of length = "<<(int)[pRespString length]<<endl;
// write file depending upon the response
NSString *pAppFileName = [self parseAndGenerateFile:pRespString];
// done with the data
// [pData release];
if(!pAppFileName){
[self setErrorString:@"Server Error"];
return nil;
}
return pAppFileName;
}else{
debugLog<<" data is NULL"<<endl;
NSString *pErrorMessage = [error localizedDescription];
[self setErrorString:pErrorMessage];
/* Must be the Network error, lets show it to the user */
}
return nil;
}