Objective-C/CocoaHttpServer - Попытка сделать простой запрос GET с одним параметром

Я пытаюсь использовать "CocoaHTTPServer", найденный по адресу https://github.com/robbiehanson/CocoaHTTPServer. Я добавил его в свой проект, и теперь, если я ввожу в своем браузере что-то вроде этого: 192.168.3.114:45000, я получаю html-страницу index с простым приветственным сообщением (эта страница хранится в проекте по умолчанию). Хорошо. Работает правильно. Теперь мне нужно понять, как я могу, например, сделать простой запрос GET, набрав в браузере что-то вроде "192.168.3.114:52000/getElement" и получить в браузере простую строку. Можете ли вы дать мне помощь? Я не знаю, где я могу настроить или проверить это, потому что есть некоторые классы. Я пытаюсь изучить класс HTTPConnection, но я в замешательстве, потому что я новичок в Objective-C программирования. Спасибо

2 ответа

Вы должны использовать обычай HTTPConnection подкласс

@interface MyHTTPConnection : HTTPConnection
...
@end

тогда вы могли бы сделать пользовательскую обработку URL

@implementation MyHTTPConnection

    - (NSObject<HTTPResponse> *)httpResponseForMethod:(NSString *)method URI:(NSString *)path
    {
    HTTPLogTrace();

    if ([path isEqualToString:@"/getElement"])
    {
            NSData *data = ...
            HTTPDataResponse *response = [[HTTPDataResponse alloc] initWithData:data];
            return response;
    }

        // default behavior for all other paths  
    return [super httpResponseForMethod:method URI:path];
    }

@end

и множество HTTPServer connectionClass так что ваш сервер знает, что вы хотите обрабатывать соединения самостоятельно

[httpServer setConnectionClass:[MyHTTPConnection class]];

Вы можете выполнить запрос NSURL, а затем получить ответ сервера в виде строки NSString:

NSString *URL = @"http://yoururlhere.com?var1=";
URL = [URL stringByAppendingString: yourvarstring];
NSData *dataURL =  [NSData dataWithContentsOfURL: [ NSURL URLWithString: URL]];

NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];
//Check if the server has any output
if([serverOutput length] == 0)
{
    //Do something
} else {
    //Do Something else
}
Другие вопросы по тегам