2010-03-07 4 views
1

iPhone 데이터를 서버에 보내서 데이터를 MySQL 데이터베이스에 등록하면 알림 등을 보낼 수 있습니다. 그것은 고유 한 식별자, 장치 이름, 토큰 및 우리 서버에 POST 요청과 같은 암호와 사용자 이름과 같은 몇 가지 작은 것들을 보냅니다. 문제는 때때로 서버가 데이터를 수신하지 않는다는 것입니다. 그리고 이것은 POST 입력에 대한 공백 값을받는 것이 아니라 모든 포스트 데이터를 수신하지 않는 것을 의미합니다. 모든 POST 입력을 내 서버에 일부 로그 파일에 기록하고 장치의 POST 데이터에 의존하는 스크립트가 실패 할 때 (데이터를 감지하지 못함) POST 데이터가 전송되지 않았 음을 알게됩니다. 데이터를 거부하는 것과 같은 서버상의 문제입니까, 아니면 클라이언트 측에 있어야합니까? 무엇이 이것을 일으킬 수 있습니까?POST 데이터가 iPhone에서 수신되지 않습니다.

아이폰 코드 : 나는 ASIHTTPRequest를 사용하는 것이 좋습니다

NSString *post = [NSString stringWithFormat:@"deviceIdentifier=%@&deviceToken=%@",deviceIdentifier,deviceToken]; 
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; 
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
[request setURL:[NSURL URLWithString:@"http://website.com/RegisterScript.php"]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"MyApp-V1.0" forHTTPHeaderField:@"User-Agent"]; 
[request setHTTPBody:postData]; 
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *response = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding]; 

답변

1

HTTP를 통해 통신하기위한 좋은 프레임 워크입니다. 통신이 비동기식으로 처리되므로 통신에 오랜 시간이 걸릴 경우 iPhone OS에서 앱이 중단 될 위험이 없습니다. 또한 보내려는 양식 데이터를보다 쉽게 ​​작성하는 방법도 있습니다.

관련 문제