无法POST请求服务

时间:2012-11-25 15:29:54

标签: objective-c ios nsurlconnection nsurl nsurlrequest

出于某种原因,我总是得到Endpoint not found.,但是当我把它放在浏览器中时,它可以完美地运行。我肯定做错了什么..

- (void)requestLoad:(NSString *)req_udid Age:(NSString *)req_age Gender:(NSString *)req_gender CheckBoxes:(NSString *)req_checkBoxes
{
    NSString *post = [NSString stringWithFormat:@"/UpdatePersonalInterests/%@/%@/%@/%@/0",req_udid, req_age, req_gender, req_checkBoxes];
    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

    //set up the request to the website
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];

    [request setURL:[NSURL URLWithString:NSLocalizedStringFromTable(@"kServiceURL", @"urls", nil)]];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:postData];

    NSError *error;
    NSURLResponse *response;

    NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    NSString *result = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",result);
}

谢谢!

2 个答案:

答案 0 :(得分:0)

看起来您正在使用自定义服务方案。您是否在Target中注册了它 - > info - URLS类型?请参阅Apple文档或注册自定义网址架构:Implementing Custom URL Schemes

答案 1 :(得分:0)

所以我已经设法使用NSURLConnection和异步请求使用以下代码执行此操作:

- (void)getIntrests
{
    NSString *req_udid = [PROUtils createOrLoadUserIdentifier];
    NSString *webaddress = [kServiceBaseURL stringByAppendingString:[NSString stringWithFormat:@"/GetPersonalInterestsForUdid/%@",req_udid]];

    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:webaddress] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:
     ^(NSURLResponse* response, NSData* data, NSError* error) {
         NSString* dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

         [[NSNotificationCenter defaultCenter] postNotificationName:kGotMediaFromServer object:dataString];

         NSLog(@"Update response completed: %@ with data: %@ error: %@",response,dataString,error);
     }];
}

希望它对某人有用。