내 iPhone 응용 프로그램에서 ASIFormDataRequest를 사용하여 방금 녹화 한 비디오를 ID로 사용할 수있는 문자열과 함께 보내려고합니다. 동영상이 속합니다. 이렇게하기위한 코드는 다음과 같습니다.서버가 Objective-C의 ASIFormDataRequest에서 POST 요청을 올바르게받지 못한다.
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL *urlvideo = [info objectForKey:UIImagePickerControllerMediaURL];
NSString *urlString=[urlvideo path];
NSLog(@"urlString=%@",urlString);
NSString *str = [NSString stringWithFormat:@"http://www.mysite.com/videodata.php"];
NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
NSData *patientData = [_patientCode dataUsingEncoding:NSUTF8StringEncoding];
[request setFile:urlString forKey:@"video"];
[request setData:patientData forKey:@"patientcode"];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request startSynchronous];
NSLog(@"responseStatusCode: %i",[request responseStatusCode]);
NSLog(@"responseString: %@",[request responseString]);
[picker dismissViewControllerAnimated:YES completion:nil];
}
모든 것이 올바르게 작동하는 것으로 보입니다. 상태 코드 200이 다시 표시되고 예상대로 메소드가 완료됩니다. 그러나, 아무것도 서버에서 PHP 파일에 의해받은 것으로 보인다. 내 서버 측 PHP 코드에 줄을 추가 :
이echo(count($_POST));
이 0 반환, 그래서 아무것도 실제로 ASIFormDataRequest에 의해 게시지는 않는 것처럼 보인다. 이전에 ASIFormDataRequest를 사용 해본 적은 없기 때문에 누락 된 몇 가지 간단한 단계가있는 것처럼 느껴지지만 도움이 될 것입니다.
편집 : 나는 setPostValue:_patientCode
에 setData:patientData
을 변경하고 setPostValue
작동하지만 setData
및 setFile
이하지 않는 것처럼 보인다 그래서 지금 포스트의 그 부분이 제대로 보내지고 있습니다.
내가 아는 바는 아니지만 ASIHTTPRequest 대신 AFNetworking을 사용하는 것이 좋습니다. –