IOS 发送 post 方法数据可以在 php 中作为 get 方法访问
IOS sending post method data can access in php as get method
我对 iOS 很陌生。我正在尝试通过 post 方法将数据发送到 PHP。在 PHP 中它不能像 $_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
中通过查询字符串发送数据
我认为如果您尝试在请求正文中传递数据,它会起作用:[urlRequest setHTTPBody:...]
POST 参数来自请求体,而不是来自 URL 字符串。您需要:
- 根据请求调用
setHTTPBody
并提供 URL 编码的字符串(无问号,IIRC)作为正文数据
- 调用
setValue:forHTTPHeaderField:
将 Content-Type 设置为 application/x-www-form-urlencoded
- 删除对
[connection start]
的调用或使用 initWithRequest:delegate:startImmediately:
,这样您就不会启动连接两次。
最后一个有点重要。如果您尝试启动连接两次,您会得到奇怪的结果。 :-)
我对 iOS 很陌生。我正在尝试通过 post 方法将数据发送到 PHP。在 PHP 中它不能像 $_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
中通过查询字符串发送数据
我认为如果您尝试在请求正文中传递数据,它会起作用:[urlRequest setHTTPBody:...]
POST 参数来自请求体,而不是来自 URL 字符串。您需要:
- 根据请求调用
setHTTPBody
并提供 URL 编码的字符串(无问号,IIRC)作为正文数据 - 调用
setValue:forHTTPHeaderField:
将 Content-Type 设置为application/x-www-form-urlencoded
- 删除对
[connection start]
的调用或使用initWithRequest:delegate:startImmediately:
,这样您就不会启动连接两次。
最后一个有点重要。如果您尝试启动连接两次,您会得到奇怪的结果。 :-)