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
}