0

PHP Web サービスへの投稿に配列を含めようとしています。機能していないようで、何らかのフォーマットの問題であるに違いないと思いますが、フォーマットする方法がわかりません。次の iOS 投稿文字列があります: (POST の方法は知っていますが、それは問題ではありません。)

NSString *post = [NSString stringWithFormat:@"&action=post_data&start_time=%f&runners=%@&racename=%@&num_splits=%d", timeInterval, runners /* NSMutableArray */, raceName, numberOfSplits];

「runners」は NSMutableArray であり、この方法で渡すだけでは正しく機能しないようです。

配列を渡すにはどうすればよいですか? 私が PHP を変更することはできず、サービスは配列を想定しています。JSON オブジェクトをサービスに渡しますが、それは制御できません。

PHPは次のとおりです。

$runners = $_POST["runners"]; 
4

2 に答える 2

0

いせみ そうです。配列を投稿変数として渡すには、次の形式で URL 文字列を作成する必要があります。

http://myserver.com/test.php?myArray[]=123&myArray[]=456

実装方法は次のとおりです。

NSArray *arrayWithIDs = [[NSArray alloc] initWithObjects:[NSNumber numberWithInt:123], [NSNumber numberWithInt:456], nil];
NSString *postVarArrayString = @"";
NSString *separator = @"?";
for (int i=0; i<[arrayWithIDs count]; i++) {
    if (i>0) {
        separator = @"&";
    }
    postVarArrayString = [NSString stringWithFormat:@"%@%@myArray[]=%d", postVarArrayString, separator, [[arrayWithIDs objectAtIndex:i] integerValue]];
}

// url
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:
                                   @"http://myserver.com/test.php"
                                   @"%@"
                                   , postVarArrayString]
             ];

NSLog(@"%@", [url absoluteString]);
于 2013-11-12T14:43:26.633 に答える