Как загрузить данные из приложения iphone в базу данных mysql - PullRequest
0 голосов
/ 13 марта 2012

У меня есть приложение EMR, и я хочу, чтобы я мог отправлять собранные данные в виде изображений и голоса на сервер.в базе данных, так как я могу это сделать.Есть ли способ отправить эти данные на сервер почтовым методом.

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вот пример запроса HTTP Post

// define your form fields here:
NSString *content = @"field1=42&field2=Hello";

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.example.com/form.php"]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[content dataUsingEncoding:NSISOLatin1StringEncoding]];

// generates an autoreleased NSURLConnection
[NSURLConnection connectionWithRequest:request delegate:self];

Возможно, понадобится ссылка http://developer.apple.com/library/ios/#documentation/cocoa/reference/foundation/Classes/NSURLConnection_Class/Reference/Reference.html

Это руководство также полезно http://www.raywenderlich.com/2965/how-to-write-an-ios-app-that-uses-a-web-service

0 голосов
/ 13 марта 2012

В этом случае вы можете выполнить два пути: 1. если вам строго нравится использовать POST (мне нравится), вы можете использовать проект cocoahttpserver:

https://github.com/robbiehanson/CocoaHTTPServer

В приложении iphone вы можете сделать этот код для отправки POST-запроса:

-(NSDictionary *) getJSONAnswerForFunctionVersionTwo:(NSString *)function 
                                     withJSONRequest:(NSMutableDictionary *)request;
{
    [self updateUIwithMessage:@"server download is started" withObjectID:nil withLatestMessage:NO error:NO];
    NSDictionary *finalResultAlloc = [[NSMutableDictionary alloc] init];
    @autoreleasepool {


        NSError *error = nil;

        NSString *jsonStringForReturn = [request JSONStringWithOptions:JKSerializeOptionNone serializeUnsupportedClassesUsingBlock:nil error:&error];
        if (error) NSLog(@"CLIENT CONTROLLER: json decoding error:%@ in function:%@",[error localizedDescription],function);
        NSData *bodyData = [jsonStringForReturn dataUsingEncoding:NSUTF8StringEncoding];
        NSData *dataForBody = [[[NSData alloc] initWithData:bodyData] autorelease];
        //NSLog(@"CLIENT CONTROLLER: string lenght is:%@ bytes",[NSNumber numberWithUnsignedInteger:[dataForBody length]]);
        NSString *functionString = [NSString stringWithFormat:@"/%@",function];
        NSURL *urlForRequest = [NSURL URLWithString:functionString relativeToURL:mainServer];
        NSMutableURLRequest *requestToServer = [NSMutableURLRequest requestWithURL:urlForRequest];
        [requestToServer setHTTPMethod:@"POST"];
        [requestToServer setHTTPBody:dataForBody];
        [requestToServer setTimeoutInterval:600];
        [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[urlForRequest host]];

        NSData *receivedResult = [NSURLConnection sendSynchronousRequest:requestToServer returningResponse:nil error:&error];

        if (error) {
            NSLog(@"CLIENT CONTROLLER: getJSON answer error download:%@",[error localizedDescription]);
            [self updateUIwithMessage:[error localizedDescription] withObjectID:nil withLatestMessage:YES error:NO];
            [finalResultAlloc release];
            return nil;
        }
        NSString *answer = [[NSString alloc] initWithData:receivedResult encoding:NSUTF8StringEncoding];
        JSONDecoder *jkitDecoder = [JSONDecoder decoder];
        NSDictionary *finalResult = [jkitDecoder objectWithUTF8String:(const unsigned char *)[answer UTF8String] length:[answer length] error:&error];
        [finalResultAlloc setValuesForKeysWithDictionary:finalResult];

        [answer release];
        [self updateUIwithMessage:@"server download is finished" withObjectID:nil withLatestMessage:NO error:NO];

        if (error) NSLog(@"CLIENT CONTROLLER: getJSON answer failed to decode answer with error:%@",[error localizedDescription]);
    }
    NSDictionary *finalResultToReturn = [NSDictionary dictionaryWithDictionary:finalResultAlloc];
    [finalResultAlloc release];

    return finalResultToReturn;

}

Не забудьте упаковать атрибуты с изображениями в base64.

Наконец, если вам не нравится хранить данные, которые вы отправляете в вашем Mac-приложении, вы можете отправить их в базу данных, используя любую базу данных C api. Я рекомендую использовать основные данные для сохранения полученных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...