2010-08-05 2 views
0

바이트를 서버로 보내려고합니다. 그래서 나는 어떤 데이터 유형이 바이트로 사용되지 않는가. "% s"을 (를) 사용하고 바이트를 서버로 보냈습니다. 그러나 서버 측에서는 6 바이트 만 받았습니다. 하지만 제 경우에는 32 바이트를 서버에 보내려고합니다. 그렇다면 어떤 데이터 유형이 사용됩니까?iPhone의 Objective C에서 Byte 데이터 유형

편집 : - 여기

내 샘플 코드는이

-(void)sendDevice:(NSData *)data // data value comes 32 bytes. 
{ 
     NSString *urlString = [NSString stringWithFormat: @"http://MyserverURL.php?Dataid=%????",[data bytes]]; 

     NSURL *urlToSend2 = [[NSURL alloc] initWithString:urlString]; 

     NSURLRequest *urlRequest2 = [NSURLRequest requestWithURL:urlToSend2    cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:50];              

     NSURLConnection *theconnection=[[NSURLConnection alloc] initWithRequest:urlRequest2 delegate:self]; 

     [theconnection start]; 

} 

저를 안내하시기 바랍니다.

감사합니다.

+0

퍼센트의 S는 문자열, 위험하게! 문자열은 C (및 Objective C)의 0 바이트에서 끝나기 때문에 6 개의 0이 아닌 바이트와 1 개의 0이 있습니다. 모든 문자가 URL에 안전하게 나타날 수있는 것은 아닙니다 (그래서 url-encoding/quoting을 사용하는 이유입니다). % s은 좋은 생각이 아닙니다! –

답변

1

NSData은 일반적으로 바이트 데이터에 사용되는 클래스입니다. 그 문서를보고 당신이 필요로하는 것이 있는지보십시오.

+0

답장을 보내 주셔서 감사합니다. 나는 NSData를 사용하고 바이트를 서버에 보냈다. NSData 값은 [데이터 바이트]입니다. 서버에 게시 할 수있는 방법은 무엇입니까? \t NSString * urlString = [NSString stringWithFormat : @ "http : // InMy serverurl.com/DTid = % ????", [ 데이터 바이트]]; – Pugal

0

서버에 POST 데이터를 보내려고하는 것처럼 보입니까? 이 질문에

모양은 비슷하고 제시는, 생의 바이트가 가장 잘있는 NSData 인스턴스에 저장되어 있듯이 답을

Sending POST data from iphone over SSL HTTPS

1

를 제공 할 수 있습니다. 웹 서버로 전송하려면 NSData의 바이트를 Base64로 인코딩 한 문자열 표현을 생성해야합니다. 이를 위해서는 this CocoaDev wiki page 하단에있는 카테고리 중 하나를 권 해드립니다.

0

임의의 데이터를 사용하는 경우 먼저 데이터를 누적시킨 다음 % s를 사용하십시오. 서버 측에서 수신시 디코딩 할 수 있습니다. 따라서 기본적으로 "% 02x"형식의 반복적 인 스프린트를 수행하고 이들을 추가하십시오. 그 경우에? url-strings 내부에서 생존 할 것인가? 당신의보기에서와 같이.

+0

: 나에게 Base64 제안을 보았습니다 (더 효율적입니다). 표준 알파벳에 /, 이 포함되어 있기 때문에 회피했는데 링크를 통해 멋지게 지정할 수있었습니다. –

1

서버에 POST 데이터를 사용하는 것처럼 보입니까?

처럼 : -----

- (Boolean) pushSync: (NSString *) fromContext ToContext: (NSString *) toContext 
{ 

    Boolean success = FALSE; 

    NSString *exported = [self exportData: fromContext ToContext: toContext]; 

    if(exported != nil) 
    { 

     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [self getPushURL]]; 

     if(request != nil) 

     { 

      NSURLResponse * response = nil; 

      NSError * error = nil; 

      [request setValue:@"text/xml" forHTTPHeaderField:@"Content-Type"]; 

      NSMutableData *postBody = [NSMutableData data]; 

      [postBody appendData:[exporteddataUsingEncoding:NSUTF8StringEncoding]]; 

      [request setHTTPBody:postBody]; 

      [request setHTTPMethod:@"POST"]; 

      NSData *xmlResult = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

      if(xmlResult) 

      { 
      [self parseXMLResult:xmlResult]; 

       if([replyStatus isEqualToString:@"true"]) 

       success = TRUE; 
      } 
     } 

    } 

    return success; 

}