2014-01-23 6 views
1

Я написал приложение iOS и успешно загрузил строку на сервер через POST.ios отправляет запрос POST с параметром POST

bodyString = [NSString stringWithFormat:@"text1=%@&submit1=+Absenden+", contentString]; 

request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.xxx /xxx/get.jsp"]]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[bodyString dataUsingEncoding:NSUTF8StringEncoding]]; 

self.connection = [NSURLConnection connectionWithRequest:request delegate:self]; 

Мне нужно изменить сервер, поэтому я использовал один и тот же код, но он не работает, хотя я получить код статуса 200. Лицо, ответственное за новый сервер, говорит, что оно не работает, потому что я отправляю POST, но я не отправляю строку как параметр POST.

К сожалению, она не знает iOS, поэтому не могу объяснить мне, как это сделать. Я искал вокруг, но я ничего не нашел и до сих пор не понимаю: что означает отправить POST И в то же время отправить строку как параметр POST?

Любая помощь будет очень любезной.

+0

используйте эту ссылку, очень надеюсь на вас, ссылка http://stackoverflow.com/questions/20715367/json-get-and-post/20715428#20715428 –

+0

Спасибо. Я посмотрел, я не могу отправить синхронно, мне нужно асинхронно, но мне действительно нужно понять, как отправить строку в качестве параметра POST. Знаете ли вы, что это значит ? – Clararhea

+0

post paramater означает установить переменную, как средство формы, похожее на набор с телом –

ответ

4

Обрабатывать данные результатов с помощью методов делегата NSURLConnection

NSString *post = [NSString stringWithFormat:@"postBody=%@",@"Raja"]; 
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[post length]]; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://localhost/promos/index.php"]]; 


    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPBody:postData]; 

    NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:request delegate:self]; 

    if(theConnection){ 
     // indicator.hidden = NO; 
     mutableData = [[NSMutableData alloc]init]; 
    } 

ваш PHP код

<?php 
    $result = $_POST['postBody']; 


    echo $result; 
?> 
+0

iDev -Очень полезный ответ, спасибо. Часть PHP тоже полезна, поскольку я могу сравнить с моим сервером. очень близко, но у меня есть 1 вопрос: В вашем PHP вы ожидаете «postBody». В моем PHP я ожидаю «string», поэтому я заменил его в своем коде. В вашем примере @ «postBody =% @», @ » Raja "вы используете @" xx ". Моя строка представляет собой конкатенацию нескольких строк, меняющихся с каждым пользователем, поэтому я не могу поместить ее содержимое в postBody. Я попытался @" postBody =% @ ", myString, но он не удалось. – Clararhea

+0

что такое значение myString. Вы проверяете его null или нет @ user3227325 – codercat

+0

описывает ваш stringwithformat – codercat

1

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

AFNetworking

и это, как вы можете отправить запрос на сообщение:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
NSDictionary *parameters = @{@"foo": @"bar"}; 
[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON: %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@", error); 
}]; 

Вы можете поймать ответ или ошибку в своих соответствующих блоков очень легко.

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