将Pickerview数据发送到URL

时间:2014-02-27 10:35:35

标签: ios nsurlconnection

从选择器视图中选择数据时,我得到了项目ID:12。现在我的问题是我想将该12(项目ID)发送到NSURL,以便在更改项目时分别加载我的任务。以下是我的代码:

ViewDidload:

NSString *nsTaskurllocal = @"http://xxxx/xxx/";
    NSString *projectsLabel = [self.lblProjects text];
    NSString *aString = [nsTaskurllocal stringByAppendingString:projectsLabel];
    NSLog(@"aString : %@", aString);
    NSString *temp = [aString stringByAppendingString:@"/"];

    int usrid = 313;
    NSString *usridstring = [NSString stringWithFormat:@"%d", usrid];
    NSString *finalurl = [usridstring stringByAppendingString:temp];
    NSURL *nstaskurl = [NSURL URLWithString:finalurl];
     NSLog(@"nstaskurl : %@", nstaskurl);

    NSData *nstaskpostData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *nstaskpostLength = [NSString stringWithFormat:@"%lu", (unsigned long)[nstaskpostData length]];
    NSMutableURLRequest *nstaskrequest = [[NSMutableURLRequest alloc] init];
    [request setURL:nstaskurl];
    [request setHTTPMethod:@"POST"];
    [request setValue:nstaskpostLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/projectpicker" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/jsonArray" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:nstaskpostData];


    NSError *nstaskerror = [[NSError alloc] init];
    NSHTTPURLResponse *nstaskresponse = nil;
    NSData *nstaskurlData=[NSURLConnection sendSynchronousRequest:nstaskrequest returningResponse:&nstaskresponse error:&nstaskerror];
    NSURLRequest *nstaskurlRequest = [NSURLRequest requestWithURL:nstaskurl
                                                cachePolicy:NSURLRequestReturnCacheDataElseLoad
                                            timeoutInterval:30];


    // Make synchronous request
    nstaskurlData = [NSURLConnection sendSynchronousRequest:nstaskurlRequest
                                    returningResponse:&nstaskresponse
                                                error:&nstaskerror];
    if ([nstaskresponse statusCode] >= 200 && [nstaskresponse statusCode] < 300)
    {
        NSString *nstaskresponseData = [NSJSONSerialization JSONObjectWithData:nstaskurlData
                                                                 options:NSJSONReadingAllowFragments error:&nstaskerror];

        NSArray *nstaskentries = [NSJSONSerialization JSONObjectWithData:[nstaskresponseData dataUsingEncoding:NSUTF8StringEncoding]
                                                           options:0 error:&nstaskerror];
        if(!nstaskentries)
        {
            NSLog(@"Error : %@", nstaskerror);
        }
        else{

            for (NSDictionary *nstaskentry in nstaskentries) {
                 taskID = [nstaskentries valueForKey:@"ID_TASK"];
                taskNames = [nstaskentries valueForKey:@"TASk_NAME"];

                //NSLog(@"Error : %@", taskNames); //log to see the result in console // by Kiran
            }

            _projectpicker.delegate = self;
            _projectpicker.dataSource = self;
        }

    }       else {

    }

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{

    NSNumber *myProjectArrayString = [projID objectAtIndex:row];
    //NSNumber *myTaskArrayString = [taskID objectAtIndex:row];
    //NSLog(@"%@",myArrayString);
    //NSLog(@"%@",myTaskArrayString);
    lblProjects.text = [NSString stringWithFormat:@"%@",myProjectArrayString];
    //lblProjects.hidden = YES;
    lblTasks.text = [taskNames objectAtIndex:[pickerView selectedRowInComponent:1]];
    //lblTasks.text = [NSString stringWithFormat:@"%@", myTaskArrayString];
    lblSubTasks.text = [subtaskNames objectAtIndex:[pickerView selectedRowInComponent:2]];
}

lblProjects.text有项目ID:12所以我需要将这个12传递给我的aString,以便我可以追加并传递给NSURL Thnaks

2 个答案:

答案 0 :(得分:0)

尝试通过除以组件来拆分字符串,因此[splitArray lastObject]是你的“12”

NSString *nsTaskurllocal = @"http://xxxx/xxx/";
NSString *projectsLabel = @"Project ID :12";
NSArray *splitArray = [projectsLabel componentsSeparatedByString:@":"];
NSString *aString = [NSString stringWithFormat:@"%@%@", nsTaskurllocal, [splitArray lastObject]];

aString现在应该是http://xxxx/xxx/12

答案 1 :(得分:0)

试试这个,我希望这会有所帮助,如果你有任何问题,请告诉我

-(void)postMethod   
{   
NSString *urlString = [NSString stringWithFormat:@"http:******"];
NSString *userIDString=@"131";
NSString *productIDString=@"12";
NSString * productIdString =[NSString stringWithFormat:@"%@/%@",userIDString,productIDString];
NSData* postData= [productIdString dataUsingEncoding:NSUTF8StringEncoding];
NSString *decode = [[NSString alloc] initWithData:postData encoding:NSUTF8StringEncoding];
NSLog(@"%@",decode);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:string] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:postData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString*s11=   [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
}