我在Xcode
中有一个简单的NSArray
,我想将其传递到PHP文件并将其用作循环。我该怎么做?
例如,我的NSArray看起来像这样:
NSArray *array = [NSArray arrayWithObjects: @"hello", @"hi", @"how are you", nil];
到目前为止我做了什么,但没有成功
NSArray *array = [NSArray arrayWithObjects:@"hello", @"hi", @"how are you?", nil];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array
options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSString *postString = [NSString stringWithFormat:@"array=%@", array];
NSData* data = [postString dataUsingEncoding:NSUTF8StringEncoding];
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate:self delegateQueue: [NSOperationQueue mainQueue]];
NSURL* url = [NSURL URLWithString:@"http://url.com/file.php"];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:data];
__block NSString *resultString;
NSURLSessionDataTask* dataTask = [defaultSession dataTaskWithRequest:urlRequest
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(error == nil)
{
resultString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
NSLog(@"Data: %@",resultString);
}
}];
[dataTask resume];
我的PHP。我在这里学习了教程
$array = array();
$array = $_POST['array'];
$arrlength = count($array);
for ($i=1; $i <= $arrlength; $i++)
{
//do something
}
我试着回显$array
,但它是空的。我对Objective-c有所了解,但对PHP知之甚少。我的代码可以$_POST NSStrings
,但我仍然不知道如何使用NSArray
来实现这一点。
如果有人能给我一些指导,或者给我一些教程链接的链接,那将是伟大的。我试过在stackoverflow和谷歌上搜索如何做到这一点,但我根本无法理解。
所以我的问题很简单。如何在PHP中将NSArray
转换为索引数组?
因此,使用您所拥有的和其他问题来改变这一点:
NSString *postString = [NSString stringWithFormat:@"array=%@", array];
收件人:
NSMutableString *postString = [NSMutableString alloc]
for (NSString *thing in array) {
[postString appendFormat:@"array[]=%@&",[thing stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}
这将为您提供所需的post字符串。
您不只是将JSON放在HTTP主体中。您应该根据RFC 2616发送正确的POST
HTTP格式。您可以查看JWURLConnection类是如何做到这一点的。
编辑你基本上是这样做的:
array=$_json_string;
或者你用PHP把它红成这样:
$post = file_get_contents("php://input");
$json_object = json_decode($post, true);