iPhone从服务器调用python函数

时间:2011-01-03 17:54:19

标签: iphone python

我有一个使用python函数设置的后端。我希望python做很多基于位置的工作,而不是让objective-c做计算和其他一切。这是有原因的。

但是,我不知道如何连接到服务器并从objective-c调用python函数。有没有人知道这个?

谢谢!

2 个答案:

答案 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的要求,这是一个伪造的例子。

  1. 运行Web服务。让我假装有一个名为" Geo.py"的Python脚本。根据位置返回纬度。 (也称为反向地理编码。)

  2. 使用ASIHTTPRequest向http://yourserver.com/Geo.py发送请求。您可以异步或同步发送请求。

  3. 那应该是它。 ASIHTTPRequest应该为您处理错误检查和连接。