将json数组发布到url

时间:2013-03-15 19:19:54

标签: ios objective-c json post asihttprequest

-(void)makeSecondRequestWithQuestionID:(NSString*)questionID value:(NSString*)value andArray:(NSArray*)array{
NSURL * url = [NSURL URLWithString:URL];
ASIFormDataRequest * request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:questionID forKey:@"question_id"];
[request setPostValue:value forKey:@"value"];
[request setPostValue:[array JSONRepresentation] forKey:@"array"];
[request setDelegate:self];
[request startAsynchronous]; 

我的值是一个数组,每次按下一个操作按钮就会改变。如何发布这个数组? 感谢

1 个答案:

答案 0 :(得分:0)

您必须为POST请求正确设置HTTP标头:

    NSURL *url = [NSURL URLWithString:@"http://localhost:8080/get-game"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    [request setHTTPMethod:@"POST"];
    //this is your array. Init it as you need
        NSArray *array;
    //we need to create dict with your data and key
        NSDictionary *jsonDict = [NSDictionary dictionaryWithObject:array forKey:@"array"];
        NSError *err;
    //data which will be actually sent to server in post request
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONReadingAllowFragments error:&err];
    //now we need to tell that we send json data in our POST request. 
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"];
        [request setHTTPBody:jsonData];
    //lets verify what will be sent    
        NSLog(@"request: %@", request);
        NSLog(@"request headers: %@", [request allHTTPHeaderFields]);
        NSLog(@"requet body: %@", [[NSString alloc] initWithData:[request HTTPBody] encoding:NSUTF8StringEncoding] );
        //send it!
        NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
    //continue with delegate methods for NSURLConnection