如何从iOS应用程序调用Python的ladon框架开发的web服务?

2024-07-05 09:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

web服务是在Python的Ladon框架上构建的。在

Web服务URL是:http://ladonize.org/python-demos/Calculator

调用web服务的代码如下:

  NSString *requestString = [NSString stringWithFormat:
                               @"http://ladonize.org/python-demos/Calculator"];
    NSString *jsonString = [NSString stringWithFormat:@"{\"methodname\":\"add\",\"args\": {\"a\":\"123\",\"b\":\"123\"}}"];
    NSData *jsonData = [NSData dataWithBytes: [jsonString UTF8String] length: [jsonString length]];
    NSURL *url = [NSURL URLWithString:requestString];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody: jsonData];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];

    NSError *errorReturned = nil;
    NSURLResponse *theResponse =[[NSURLResponse alloc]init];
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&errorReturned];

    if (errorReturned) {
        NSLog(@"Error %@",errorReturned.description);
    }
    else
    {
        NSError *jsonParsingError = nil;
        NSMutableArray *arrDoctorInfo  = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&jsonParsingError];
        NSString* newStr = [NSString stringWithUTF8String:[data bytes]];
        NSLog(@"Dict %@",newStr);
    }

我得到如下回应

^{pr2}$

Tags: orgwebhttpdatarequestlengthjsondatasetvalue
2条回答

看起来您使用的URL路径错误,应该改为http://ladonize.org/python-demos/Calculator/jsonwsp。在

创建jsonData的更好方法是使用dataUsingEncoding:。在

您不应该创建响应:

NSURLResponse *theResponse =[[NSURLResponse alloc]init];

因为它将被创建并作为sendSynchronousRequest的一部分返回给您。您应该检查theResponse的内容,以验证HTTP状态代码。在

这是有效的解决方案。。。在

NSString *requestString = [NSString stringWithFormat:
                               @"http://ladonize.org/python-demos/Calculator/jsonwsp"];
    NSString *jsonString = [NSString stringWithFormat:@"{\"methodname\":\"add\",\"args\": {\"a\":123,\"b\":123}}"];
    //: {"methodname": "add", "args": {"a":"123","b":"123"}}
    NSLog(@"the request string is %@", requestString);
    NSData *jsonData = [NSData dataWithBytes: [jsonString UTF8String] length: [jsonString length]];


NSURL *url = [NSURL URLWithString:requestString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody: jsonData];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];

NSError *errorReturned = nil;
NSURLResponse *theResponse =[[NSURLResponse alloc]init];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&theResponse error:&errorReturned];

if (errorReturned) {
    NSLog(@"Error %@",errorReturned.description);
}
else
{
    NSError *jsonParsingError = nil;
    NSMutableArray *arrDoctorInfo  = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments error:&jsonParsingError];
    NSString* newStr = [NSString stringWithUTF8String:[data bytes]];
    NSLog(@"Dict %@",newStr);
}

相关问题 更多 >