2011-05-15 8 views
1

저는 iOS 개발에 상당히 익숙하며 PHP로 작성한 웹 서비스에 요청 메시지를 보내려고합니다. XML 요청을 처리하고 응답 XML 메시지를 제공합니다.iPhone 웹 서비스 NSData 및 PHP

그러나 내가 가지고있는 문제는 웹 서비스에 데이터를 보낼 때 NSData 형식이라는 것입니다. 데이터의

NSLog가 전송되는

은 다음과 같습니다
<3c3f786d 6c207665 7273696f etc etc ... 743e> 

는 PHP 스크립트는이 같은 XML 메시지를 기대하고있다 그러나 :

그래서 내 질문은
<?xml version="1.0" ?><request-message><tag-1></tag-1><tag-2></tag-2></request-message> 

를, 거기를 전송하는 방법 XML로 변환 할 필요가 없으며 NSData 문자열을 PHP 서버 측에서 읽을 수있는 XML로 변환 할 수 있습니까?

미리 감사드립니다.

Pazzy

편집 : 요청 코드 포함하려면 :

// Construct the webservice URL 
NSURL *url = [NSURL URLWithString:@"http://localhost/web/check_data.php"]; 

NSString *requestXML = @"<?xml version='1.0'?><request-message><tag-1>VALUE1</tag-1><tag-2>VALUE2</tag-2></request-message>"; 

NSData *data = [requestXML dataUsingEncoding:NSUTF8StringEncoding]; 

// Create a request object with that URL 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30]; 

[request setHTTPBody:data]; 
[request setHTTPMethod:@"POST"]; 
+0

에서보세요? –

+0

편집 섹션에 코드 추가 – Pazzy

+0

다음은 연결을 만들기 위해 수행됩니다. connection = [[NSURLConnection alloc] initWithRequest : 델리게이트 요청 : self startImmediately : YES]; – Pazzy

답변

4

HTTP Body에 XML을 보내고 PHP 측에서 그것을 구문 분석을 당신은 Content-Typeapplication/xml; charset=utf-8로 설정해야합니다

NSString* sXMLToPost = @"<?xml version=\"1.0\" ?><request-message><tag-1></tag-1><tag-2></tag-2></request-message>"; 

NSData* data = [sXMLToPost dataUsingEncoding:NSUTF8StringEncoding]; 

NSURL *url = [NSURL URLWithString:@"http://myurl.com/RequestHandler.ashx"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[sXMLToPost dataUsingEncoding:NSUTF8StringEncoding]]; 

NSURLResponse *response; 
NSError *error; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err]; 

if (error) {..handle the error} 

및 서버에서 다음 PHP 코드를 사용해보십시오.

17,451,515,당신이 아이폰 측의 요청을 생성하는 방법에 대한 코드를 공유 할 수이 iPhone sending POST with NSURLConnection

+0

고마워요 ... 당신의 코드가 제 생각과 많이 달라 보이지 않습니다. 나는 [요청 setValue : @ "application/xml; charset = ..."];을 추가했다. Obj-C 코드가 맞는지 확실하지 않습니다 ... – Pazzy

+0

서버에 대한 요청이 성공적으로 처리되고 있습니까? –

+0

Entirely Not sure ... 이제 스크립트를 보내고 출력 된 내용을 출력하고 connectDidFinish가 반환되는 내용을 콘솔에 인쇄하도록 허용했습니다. 아무것도 반환되지 않습니다. PHP 쪽에서는 다음과 같이 두 줄을 출력합니다. $ rawPostXML = file_get_contents ("php : // input"); echo $ rawPostXML; – Pazzy