2014-04-26 4 views
0

Json 형식을 요구하는 서버에 데이터를 게시하려고합니다. 여기에 내가 얻을 것이다 서버NSURLConnection http 상태 400, 오류 (null)

{"storeId":"[email protected]", 
"handleName":"abcd", 
"profilePic":"(encoded bse64image in string)" 
} 

및 응답으로 전송 될 필요가 JSON 형식의 요구 사항은 JSON 형식으로되어있어

다음

내가

- (void)postTo:(NSString *)urlString params:(NSDictionary *)params completion:(void (^)(id, NSError *))completion { 
        NSURL *url = [NSURL URLWithString:urlString]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [request setHTTPMethod:@"POST"];     
    if (params.count) { 
        NSMutableArray *paramArray = [NSMutableArray array]; 
        for (NSString *key in [params allKeys]) { 
            NSString *encodedKey = [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
            NSString *encodedValue = [params[key] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
            NSString *encodedPair = [[encodedKey stringByAppendingString:@"="] stringByAppendingString:encodedValue]; 
            [paramArray addObject:encodedPair]; 
        }         
        NSString *paramString = [paramArray componentsJoinedByString:@"&"];         
        NSData *data = [paramString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
        [request setHTTPBody:data]; 
        [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[data length]] forHTTPHeaderField:@"Content-Length"]; 
        [request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; 
        [request setValue:@"application/json; charset=UTF-8" forHTTPHeaderField:@"Accept"]; 
    } 
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {         
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;       
        if (!error && httpResponse.statusCode < 400) { 
            NSError *parseError; 
            id parse = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&parseError]; 
            if (!parseError) { 
                completion(parse, nil); 
            } else { 
                NSLog(@"parse error %@", parseError); 
                completion(nil, parseError); 
            } 
        } else { 
            NSLog(@"http status %d, error %@", httpResponse.statusCode, error); 
            completion(nil, error); 
        } 
  }]; 

을하고처럼 호출하고 무엇 이

NSString *[email protected]"[email protected]"; 
            NSString *handleName = @"abc"; 
           // NSString *[email protected]"samplestringtest"; 
        UIImageView *image= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"abc.jpg"] ]; 
        _profilepicImageView.image= image.image; 
        NSData *imag64 = UIImageJPEGRepresentation(_profilepicImageView.image, 0.5f); 
        NSString *encoded = [imag64 base64EncodedStringWithOptions:0]; 
       NSString *urlString = @"http://server.cloud.com/user/registration"; 
       NSDictionary *params = @{@"storeId":storeId, 
                               @"handleName":handleName, 
                               @"profilePic":encoded 
                                }; 
      [self postTo:urlString params:params completion:^(id result, NSError *error) { 
            if (!error && result != nil) { 
               
                NSLog(@"%@", result); 
                HUD.progress = 1.0f; 
                [HUD hide:YES]; 
                [self afterSignupProceed]; 
               } else { 
                NSLog(@"%@", error); 
            } 
        }]; 

http 상태 400, 오류 null이 표시됩니다.

+0

질문에 RestKit 또는 AFNetworking 코드가 표시되지 않습니다. 400 오류는 요청한 URL 경로가 존재하지 않는다는 것을 의미합니다. 확인 했습니까? – Wain

+0

@Wain : 귀하의 이메일 ID를 얻을 수 있습니다 .. 나는이 시점에서 너무 붙어 있습니다 .. 어제 제가 restkit을 시도하고 지금은 기본 ..하지만 무슨 일이 일어나고 있는지 잘 모르겠습니다. 그것은 좋을 것입니다. 우리가 채팅 할 수 있다면 – user1201239

+0

@Wain : URL이 있는지 확인하는 간단한 방법이 있습니까? – user1201239

답변

3

제공하신 정보로 대답하기가 어렵습니다. 그러나 나는 당신을 도울 수있는 다음을 볼 수 있습니다.

첫 번째로 응답 코드는 서버 코드입니다. 연결 오류가 없었기 때문에 NSError 값이 nil 일 것으로 예상됩니다. 400Bad Request의 값이므로, 서버가 보낸 것을 싫어하는 것일 수 있습니다. 예 : 매개 변수가 누락되었습니다.

두 번째로 인코딩 된 데이터 html-form을 보낸 다음 서버에 json으로 인코딩되었음을 알리는 것 같습니다. 서버의 400 오류의 원인 일 수 있습니다. 어쩌면 json 만 지원할 수도 있고 보낸 데이터가 올바른 json이 아닐 수도 있습니다.

서버가 기대하는 형식에 대한 자세한 정보가 없으면 더 이상 당신을 도울 수 없습니다.

+0

기본적으로 이것은 사용자 등록입니다. json 형식의 데이터를 서버에 보내야합니다. 먼저 emailid, username 및 profilePic이 base64로 enconded되고 서버가 json 형식으로 반환됩니다. 그래서 어떻게해야합니까? – user1201239

+0

나를 도와 줄 수있는 추가 정보를 알려주세요. – user1201239

관련 문제