2016-04-28 4 views
0

Я очень новичок в iOS. Я пытаюсь отправить данные через метод post на PHP. В PHP он не может принимать данные, такие как $_POST['data'], но он принимает $_GET['data']. Мой код iOS выглядит следующим образом.IOS, отправляющий почтовый метод, может получить доступ к php как метод get

NSString *strURL = [NSString stringWithFormat:@"http://example.com/app_respond_to_job?emp_id=%@&job_code=%@&status=Worker-Accepted&comment=%@",SaveID2,txtJobcode1,alertTextField.text]; 

NSURL *apiURL = [NSURL URLWithString:strURL]; 
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:apiURL]; 

[urlRequest setHTTPMethod:@"POST"]; 

NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self]; 

_receivedData = [[NSMutableData alloc] init]; 

[connection start]; 
NSLog(@"URL---%@",strURL); 

Может кто-нибудь объяснить, почему это так, это будет очень полезно.

ответ

3

Пожалуйста, загрузите этот файл https://www.dropbox.com/s/tggf5rru7l3n53m/AFNetworking.zip?dl=0

и импорт файлов в проекте Define в #import "AFHTTPRequestOperationManager.h"

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"Your Url"]]; 
    NSDictionary *parameters = @{@"emp_id":SaveID2,@"job_code":txtJobcode1.text,@"status":alertTextField.text}; 

    AFHTTPRequestOperation *op = [manager POST:@"rest.of.url" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 


     NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 
     manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
     [responseObject valueForKey: @"data"]; 



    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

     NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
    }]; 
    [op start]; 
0

, потому что вы посылаете данные через строку запроса в URL
я думаю он будет работать, если вы попытаетесь передать данные в теле вашего запроса: [urlRequest setHTTPBody:...]

0

Параметры POST исходят от тела запроса, а не f введите строку URL. Вам нужно:

  • Позвоните setHTTPBody по запросу и предоставить строку URL-кодировке (без знака вопроса, IIRC) как данные тел
  • Позвоните setValue:forHTTPHeaderField: установить Content-Type для application/x-www-form-urlencoded
  • Либо удалите вызов [connection start], либо используйте initWithRequest:delegate:startImmediately:, чтобы вы не запустили соединение дважды.

Это последнее важное. Вы можете получить странные результаты, если попытаетесь запустить соединение дважды. :-)