如何使用 body 数据中的数组发出 POST 请求
How to make a POST request with an array in body data
我正在尝试使用 Objective-C 执行此操作,但我认为是相同的 body 数据,但不知道它必须如何。
一种方法(不确定最佳方法)是通过将元素的 # 作为 POST 数据字段发送来在 POST 数据中对数组进行编码。例如
NSArray *array = @[@"hi", @"there"];
NSMutableString *postData = [NSMutableString stringWithFormat:@"array_length=%d", array.count];
for (int i=0; i<array.count; ++i)
[postData appendFormat:@"&array_%d=%@", i, array[i]];
// ...
解码器然后获取 array_length
并迭代 i = [0 .. array_length-1]
以使用 array_0, array_1, ...
.
重新填充数组
这是我在旧项目中使用的两种方法。您需要设置 NSURLConnectionDelegate 并实现所需的方法。
// Check if the URLString is a valid data object
- (void) formatURLString: (NSString *) target forData:(NSArray *) data
{
if ([NSJSONSerialization isValidJSONObject:data])
{
NSError *error;
NSData *JSONdata = [NSJSONSerialization dataWithJSONObject:data options:kNilOptions error:&error];
// *** POST ***//
[self post:target withJSON:JSONdata];
} else
{
NSLog(@"Invalid JSON object. JSON object: %@", data);
}
}
- (void) post: (NSString *) target withJSON: (NSData *) jsonData
{
// Inform user network activity is taking place
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
NSMutableURLRequest *urlRequest =
[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:target]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest addValue:@"postValues" forHTTPHeaderField:@"METHOD"];
[urlRequest setHTTPBody:jsonData];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest
delegate:self];
if (!connection) { NSLog(@"Connection Failed"); }
}
我找到了这样做的方法:
POST request
head: </*Your route*/>
body:
p=aString&p=bString&p=cString&p=dString
然后在服务器中你得到:
body : {
p : [{
"aString",
"bString",
"cString",
"dString"
}]
}
感谢支持:)
我正在尝试使用 Objective-C 执行此操作,但我认为是相同的 body 数据,但不知道它必须如何。
一种方法(不确定最佳方法)是通过将元素的 # 作为 POST 数据字段发送来在 POST 数据中对数组进行编码。例如
NSArray *array = @[@"hi", @"there"];
NSMutableString *postData = [NSMutableString stringWithFormat:@"array_length=%d", array.count];
for (int i=0; i<array.count; ++i)
[postData appendFormat:@"&array_%d=%@", i, array[i]];
// ...
解码器然后获取 array_length
并迭代 i = [0 .. array_length-1]
以使用 array_0, array_1, ...
.
这是我在旧项目中使用的两种方法。您需要设置 NSURLConnectionDelegate 并实现所需的方法。
// Check if the URLString is a valid data object
- (void) formatURLString: (NSString *) target forData:(NSArray *) data
{
if ([NSJSONSerialization isValidJSONObject:data])
{
NSError *error;
NSData *JSONdata = [NSJSONSerialization dataWithJSONObject:data options:kNilOptions error:&error];
// *** POST ***//
[self post:target withJSON:JSONdata];
} else
{
NSLog(@"Invalid JSON object. JSON object: %@", data);
}
}
- (void) post: (NSString *) target withJSON: (NSData *) jsonData
{
// Inform user network activity is taking place
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
NSMutableURLRequest *urlRequest =
[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:target]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest addValue:@"postValues" forHTTPHeaderField:@"METHOD"];
[urlRequest setHTTPBody:jsonData];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest
delegate:self];
if (!connection) { NSLog(@"Connection Failed"); }
}
我找到了这样做的方法:
POST request
head: </*Your route*/>
body:
p=aString&p=bString&p=cString&p=dString
然后在服务器中你得到:
body : {
p : [{
"aString",
"bString",
"cString",
"dString"
}]
}
感谢支持:)