iOS Using Reachability code to check internet connection

uaecasher

macrumors 65816
Original poster
Jan 29, 2009
1,290
0
Stillwater, OK
hello,

I'm using the source of Reachability project given by apple to check if there is an internet connection, what I did is:

1) Add the Reachability.h and .m from the sample to my project
2) Add the SystemConfiguration.framework
3) the added the following code in my controllerview.m

Code:
[[Reachability sharedReachability] setHostName:@"www.google.com"];

	NetworkStatus internetStatus = [[Reachability sharedReachability] remoteHostStatus];
	
	if ((internetStatus != ReachableViaWiFiNetwork) && (internetStatus != ReachableViaCarrierDataNetwork))
	{
		UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for location finding to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
		[myAlert show];
		[myAlert release];
	}

here is the my .m code:

Code:
#import "testPickerViewController.h"
#import "Reachability.h"

@implementation testPickerViewController

@synthesize imgPicker;
@synthesize imgPickerCam;




-(void) viewDidLoad {
	
	[[Reachability sharedReachability] setHostName:@"www.google.com"];
	
	NetworkStatus internetStatus = [[Reachability sharedReachability] remoteHostStatus];
	
	if ((internetStatus != ReachableViaWiFiNetwork) && (internetStatus != ReachableViaCarrierDataNetwork))
	{
		UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"No Internet Connection" message:@"You require an internet connection via WiFi or cellular network for location finding to work." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
		[myAlert show];
		[myAlert release];
	}
	
	
	
	
	if ( (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]))
		
	{	
	
	[button removeFromSuperview];
	}	
	
}




- (IBAction)grabImage {

		self.imgPicker = [[UIImagePickerController alloc] init];
	self.imgPicker.delegate = self;	
	self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
	[self presentModalViewController:self.imgPicker animated:YES];
		
}

		-(IBAction)grabImageCam {
			
			
				
	self.imgPickerCam = [[UIImagePickerController alloc] init];
	self.imgPickerCam.delegate = self;
	self.imgPickerCam.sourceType = UIImagePickerControllerSourceTypeCamera;
	[self presentModalViewController:self.imgPickerCam animated:YES];
				
}

		


  - (IBAction)uploadImage {
	  [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

	/*
	 turning the image into a NSData object
	 getting the image back out of the UIImageView
	 */
	  
	  
	NSData *imageData = UIImageJPEGRepresentation(image.image, 100);
	  

	// setting up the URL to post to
	NSString *urlString = @"http://mozymac.com/upload.php";
	
	// setting up the request object now
	
	NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
	[request setURL:[NSURL URLWithString:urlString]];
	[request setHTTPMethod:@"POST"];

	/*
	 add some header info now
	 we always need a boundary when we post a file
	 also we need to set the content type
	 
	 You might want to generate a random boundary.. this is just the same 
	 as my output from wireshark on a valid html post
	 */
	NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
	NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
	[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
	
	/*
	 now lets create the body of the post
	 */
	  
	NSMutableData *body = [NSMutableData data];
	[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];	
	[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
	[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
	[body appendData:[NSData dataWithData:imageData]];
	[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
	// setting the body of the post to the reqeust
	[request setHTTPBody:body];
	
	// now lets make the connection to the web
	
	NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
	NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
	  
	
	myTextField.text = (returnString);
	
	  [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

	
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
	image.image = img;
	
			 
			
	[[picker parentViewController] dismissModalViewControllerAnimated:YES];
	// need to show the upload image button now
	upload.hidden = NO;

}



@end
I'm getting these errors:

 

uaecasher

macrumors 65816
Original poster
Jan 29, 2009
1,290
0
Stillwater, OK
Make sure you've read the entire thread, especially post #29.
sorry about that, thing is it's almost mid-night here and I didn't notice the 2nd page and most developers are open at this time.


Anyway it works now, but got a question: I'm using google.com as check as it's the most uptime website in the internet but sometimes there is network errors only in specific countries i.e google would not open in x country. Would this problem give the error massage or not.

Thanks
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.