2013-11-18 2 views
1

Мне нужно загрузить содержимое файла, используя POST метод. Проблема в том, что сервер находится на PHP и его принимает содержимое файла в формате нижеЗагрузить содержимое файла из ios

$node->body = array('und' => array(0 => array(
'value' => 'file content', 
'format' => 'filtered_html'))); 

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

ответ

0

После кода описывают простой пример с POST методом (Как передать данные по POST методом)

Вы можете использовать следующий фрагмент кода, как описано in this article:.

Здесь я просто описать как использовать метод POST.

1. Установить строку с указанием фактического имени пользователя и пароля.

NSString *post = [NSString stringWithFormat:@"&Username=%@&Password=%@",@"username",@"password"]; 

2. Encode пост строку с помощью NSASCIIStringEncoding, а также после строки вам необходимо отправить в формате NSData.

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

Необходимо отправить фактическую длину ваших данных. Вычислите длину строки сообщения.

NSString *postLength = [NSString stringWithFormat:@"%d",[postData length]]; 

3. Создать URLRequest со всеми свойствами, как HTTP метод, HTTP поля заголовка с длиной почтовой строки. Создайте объект URLRequest и инициализируйте его.

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

Укажите адрес, на который вы хотите отправить данные по этому запросу.

[request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://www.abcde.com/xyz/login.aspx"]]]; 

Теперь установите HTTP метод (POST или GET). Напишите эти строки так, как в ваш код.

[request setHTTPMethod:@"POST"]; 

HTTP заголовок поля с длиной данных сообщения.

[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 

Также задано значение Закодированное значение для заголовка HTTP.

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"]; 

Установите HTTPBody в URLRequest с PostData.

[request setHTTPBody:postData]; 

4. Теперь создадим объект URLConnection. Инициализируйте его с помощью URLRequest.

NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self]; 

Это возвращает инициализированное соединение URL-адрес и начинает загружать данные для запроса URL. Вы можете проверить, действительно ли вы подключаетесь URL или не используете только if/else заявление, как показано ниже.

if(conn) 
{ 
NSLog(@”Connection Successful”) 
} 
else 
{ 
NSLog(@”Connection could not be made”); 
} 

5. Для получения данных из запроса HTTP, вы можете использовать методы делегата, предоставляемые URLConnection Class Reference. Методы делегатов приведены ниже.

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data 

выше метода используются для получения данных, которые мы получаем, используя сообщению метода.

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 

Этот метод можно использовать для получения отчета об ошибке в случае подключение не к серверу.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

Описанный выше метод используется для обработки данных после того, как соединение сделано успешно.

См такжеThisиThisдокументации для POST метода.

А вот лучший пример с исходным кодом HTTPPost Method.

+0

нет, я просто хочу кода содержимого тела для выше PHP скрипт, я в виду, что делать я должен использовать, это '' NSDictionary' или NSArray' или сочетание этих двух.? –

Смежные вопросы