Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iPhone: How to send a HTTP request to a web service using Xcode

How to send a HTTP request to a web service using Objective-C ? I need to fetch some data from my MySQL DB, so I need to send the request so I could fetch the data.

like image 694
Illep Avatar asked Aug 31 '11 19:08

Illep


3 Answers

Edit, because this is a popular question and time keeps going on. In the meantime Apple introduced NSJSONSerialization. Have a look a the docs: https://developer.apple.com/documentation/foundation/jsonserialization Only if you need to create code for iOS earlier than 5.0 you may want to use the json-framwork as mentioned below.

Besides that, the following original answer is still valid:

Assuming that you exchange your data in JSON, you may be interested in reading this. http://iosdevelopertips.com/cocoa/json-framework-for-iphone-part-2.html

However, the first part of that article answers your more general question on how to receive data from a web server/service:

- (NSString *)stringWithUrl:(NSURL *)url
{
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url
                                                    cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                                    timeoutInterval:30];
        // Fetch the JSON response
    NSData *urlData;
    NSURLResponse *response;
    NSError *error;

    // Make synchronous request
    urlData = [NSURLConnection sendSynchronousRequest:urlRequest
                                        returningResponse:&response
                                                    error:&error];

    // Construct a String around the Data from the response
    return [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
}

This is a simple example of a http request and surely good enough for your next steps. This method is given a URL and it returns the data sent by the server in an NSString.

Once that is working properly you will like to avoid that your app freezes while the request is "on the air". You can fix that by asynchronous requests. Google or the search on stackoverflow will provide you with links to examples and tutorials about that. But I suggest to go from here first, although this may not be the final solution.

like image 83
Hermann Klecker Avatar answered Nov 07 '22 00:11

Hermann Klecker


There are many ways, but perhaps the easiest is to use an existing framework, ASIHTTPRequest.

See: http://allseeing-i.com/ASIHTTPRequest/

like image 30
picciano Avatar answered Nov 06 '22 23:11

picciano


Following is a lot of very famous library you can use for request

ASIHTTPRequest

AFNetwork

MFNetwork

You can search it in google, download in github or, yes, of course, why don't use Cocoapods. that's the best thing when i compare objective-c with other language.

Good luck

like image 37
Eugene Nguyen Avatar answered Nov 06 '22 23:11

Eugene Nguyen