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이 표시됩니다.
질문에 RestKit 또는 AFNetworking 코드가 표시되지 않습니다. 400 오류는 요청한 URL 경로가 존재하지 않는다는 것을 의미합니다. 확인 했습니까? – Wain
@Wain : 귀하의 이메일 ID를 얻을 수 있습니다 .. 나는이 시점에서 너무 붙어 있습니다 .. 어제 제가 restkit을 시도하고 지금은 기본 ..하지만 무슨 일이 일어나고 있는지 잘 모르겠습니다. 그것은 좋을 것입니다. 우리가 채팅 할 수 있다면 – user1201239
@Wain : URL이 있는지 확인하는 간단한 방법이 있습니까? – user1201239