Как создать данные Http Post на веб-сервере? - PullRequest
0 голосов
/ 12 февраля 2010

Как создать данные Http Post на веб-сервере?

У вас есть пример, связанный с этой проблемой?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Это зависит от того, что вы хотите отправить на сервер. например: файл изображения или просто текст (например, из формы http).

Для файла изображения в формате UIIMage:

NSData *imageData = [NSData dataWithContentsOfFile:ImagePath];

или

NSData *imageData = UIImageJPEGRepresentation(myImage.image, 1.0);

Установите удаленный URL (например, если вы используете php)

NSString *urlString = "http://yourdomain.com/yourphpfile.php" 

Остальной код:

NSMutableURLRequest *request2 = [[[NSMutableURLRequest alloc] init] autorelease];
            [request2 setURL:[NSURL URLWithString:urlString]];
            [request2 setHTTPMethod:@"POST"];

            NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
            NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
            [request2 addValue:contentType forHTTPHeaderField: @"Content-Type"];


NSMutableData *body = [NSMutableData data];

[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    

[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name='userfile'; filename='"] dataUsingEncoding:NSUTF8StringEncoding]];
//give any name for your file(this case image file example)         
[body appendData:[[NSString stringWithString:pic_filename.jpg] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[[NSString stringWithString:@"'\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];


//add the file data to the http body            
    [body appendData:[NSData dataWithData:imageData]];

[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

// setting the body of the post to the reqeust
[request2 setHTTPBody:body];

Случай с Just Text (аналог $ _GET в php)

Подготовьте данные, которые вы хотите отправить. Для имени из формы, например

//You have your first name stored in the_first_name_to_send variable

NSString *f_name = nil;
f_name = [[NSString alloc] initWithFormat:@"%@", the_first_name_to_send];

//Encoding conversion
//This is optional but it ensures that every character encoding type is sent without issues
NSString* escapedUrlStringFirstName =[f_name stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

NSString *string1 = @"firstName=";

NSString *myRequestString;
        myRequestString = [string1 stringByAppendingString:escapedUrlStringFirstName];
NSData *myRequestData = [ NSData dataWithBytes: [ myRequestString UTF8String ] length: [ myRequestString length ] ];

NSMutableURLRequest *request2 = [[[NSMutableURLRequest alloc] init] autorelease];

[request2 setHTTPBody: myRequestData ];

[request2 setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];

NSData *returnData2 = [ NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ];

returnData2 = nil;

Загрузка файла изображения (на стороне сервера yourphpfile.php)

$file_tmp = $_FILES['userfile']['tmp_name'];
$filename = $_FILES['userfile']['name'];

Отправка текста с использованием http-поста (на стороне сервера yourphpfile.php)

$fname = $_POST["firstName"];
0 голосов
/ 13 февраля 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...