IOS发送post方法数据可以在php中以get方式访问
我对iOS很新。 我正试图通过post方法将数据发送到PHP。 在PHP中,它不能像$_POST['data']
这样$_POST['data']
,但它需要$_GET['data']
。 我的iOS代码如下。
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);
有人可以解释为什么,这将是非常有帮助的。
请下载此文件https://www.dropbox.com/s/tggf5rru7l3n53m/AFNetworking.zip?dl=0
并在你的项目中导入文件定义#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];
因为你通过url中的查询string发送你的数据
我认为这将工作,如果你尝试在请求的身体传递数据: [urlRequest setHTTPBody:...]
POST参数来自请求正文,而不是来自URLstring。 你需要:
- 在请求上调用
setHTTPBody
并提供URL编码的string(无问号,IIRC)作为正文数据 - 调用
setValue:forHTTPHeaderField:
将Content-Type设置为application/x-www-form-urlencoded
- 要么删除对
[connection start]
的调用,要么使用initWithRequest:delegate:startImmediately:
这样你就不会启动连接两次。
最后一个是重要的。 如果尝试启动连接两次,可能会得到奇怪的结果。 🙂