我有一个使用python函数设置的后端。我希望python做很多基于位置的工作,而不是让objective-c做计算和其他一切。这是有原因的。
但是,我不知道如何连接到服务器并从objective-c调用python函数。有没有人知道这个?
谢谢!
答案 0 :(得分:3)
我也是在我的一个项目的服务器(Google App Engine)上使用Python。我有一个端点,以JSON格式返回一堆数据。 (parseJSON
是我自己的方法)
@interface GSData : NSObject {
NSMutableData *responseData;
}
/////////////////////////
// in my .m file
- (void)getData {
responseData = [[NSMutableData data] retain];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:DATA_URL]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Connection failed: %@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
[responseData release];
[self parseJSON:responseString];
[responseString release];
}
对于JSON,我正在使用this project。
希望这有帮助!
答案 1 :(得分:2)
这里有几点需要考虑。
首先,根据Apple HIG指南,您的应用需要使用Reachability类检查网络连接。
要执行Python,您可能希望在服务器上创建端点(与Python和您的应用程序交互的网页)。
对于实际请求,我建议使用ASIHTTPRequest class。它为您做了很多工作(包括所需的连接检查)。
修改强>
根据OP的要求,这是一个伪造的例子。
运行Web服务。让我假装有一个名为" Geo.py"的Python脚本。根据位置返回纬度。 (也称为反向地理编码。)
使用ASIHTTPRequest向http://yourserver.com/Geo.py发送请求。您可以异步或同步发送请求。
那应该是它。 ASIHTTPRequest应该为您处理错误检查和连接。