반복적으로 NSURLConnection에 문제가있는 경우 도움이 필요합니다. 나는 맥 오에스에서 서버에 jpg를 보내는 커맨드 라인 앱을 만들고있다. 이제 30 초마다 컴퓨터에서 새 이미지를 확인합니다. HTTP Post를 사용하여 Google 서버로 전송하는 경우 (FTP로 조사했지만 많은 지원을 찾지 못했고 HTTP는 작은 파일의 경우 더 빠름) 따라서 POST는 다른 모든 반복 작업을 올바르게 보내지 만 나머지는 시간 초과가 발생합니다. 나는 왜 이것이 그렇게 할 것인지 전혀 모른다. 나는 동기식 요청과 비동기식 요청을 모두 시도했으며 둘 다 같은 결과를 보였다. 여기에 이미지를 게시 할 호출되는 함수이다 : 나는 모든 요청이 성공적으로 완료 신체의 imageData의 부분을 주석 처리하면 (내가 알고 그것을 가지고 이것에 대해 불허 마음을 매우 찾을 내용Mac OS NSURLConnection in Iteration
+ (BOOL)uploadImage:(NSData *)imageData filename:(NSString *)filename{
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] retain];
NSString *upload_url = [self getPlistValue:@"config.plist" withKey:@"upload_url"];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",
[self getPlistValue:@"config.plist" withKey:@"upload_protocol"],
upload_url]];
[request setURL:url];
[request setTimeoutInterval:10];
[request setHTTPMethod:@"POST"];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
NSString *boundary = [NSString stringWithFormat:@"---------------------------14737809831466499882%d",arc4random() % 74];
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:@"Content-Disposition: form-data; name=\"client\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[self getPlistValue:@"config.plist" withKey:@"client_dir"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"fname\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:filename] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"jpg_img\"; filename=\"%@.%@\"\r\n",filename,@"jpg"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: image/jpeg\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding] autorelease];
[body release];
[request release];
[returnData release];
return ([returnString isEqualToString:@"DONE"]);
}
수신 서버와 관련 없음). 또한이 함수 호출 바로 전에 디스크에 다시 저장하기 때문에 ImageData가 유효한 JPG임을 알 수 있습니다 (온 전성 검사를 위해).
왜 이런 일이 일어날 지 아이디어가 있습니까? 모든 통찰력은 대단히 감사 할 것입니다.
업데이트 : ASIHTTPRequest 패키지를 구현하여 작동시킬 수 있었지만 다중 부품 양식 매개 변수를 올바르게 설정하지 못했을 것으로 생각됩니다.
감사합니다 참조 용. ASIHTTPRequest를 POST 데이터로 사용하는 또 다른 예를 발견했습니다. 이는 매력처럼 작동합니다. 추천을 위해 +1 하겠지만 평판이 충분하지 않습니다. – thiesdiggity