Байтовый тип данных в Objective C в iPhone - PullRequest
0 голосов
/ 05 августа 2010

Я хочу отправить байты на сервер. Так что я не знаю, какие типы данных используются для байтов. Я использовал "% s" и отправил байты на сервер. Но на стороне сервера они получили только 6 байтов. Но в моем случае я хочу отправить 32 байта на сервер. Итак, какой тип данных используется для этого?

EDIT: -

Вот мой пример кода,

 -(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];

 }

Пожалуйста, ведите меня.

Спасибо.

Ответы [ 5 ]

1 голос
/ 18 декабря 2010

Как вы используете данные 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;

}
1 голос
/ 05 августа 2010

Как предполагает Джесси, необработанные байты лучше всего хранить в экземпляре NSData. Для передачи на ваш веб-сервер вы, вероятно, захотите создать строковое представление в кодировке Base64 байтов NSData. Для этого я рекомендую одну из категорий, присутствующих в нижней части этой вики-страницы CocoaDev .

1 голос
/ 05 августа 2010

NSData - это класс, который обычно используется для байтовых данных.взгляните на документацию и посмотрите, что вам нужно.

0 голосов
/ 05 августа 2010

Если вы используете произвольные данные, сначала зашифруйте их, а затем используйте% s. На стороне сервера вы можете декодировать его на прием. Так что в основном сделайте повторный sprintf с форматом "% 02x" и добавьте их. В этом случае он будет существовать внутри строк URL, после? как в вашем примере.

0 голосов
/ 05 августа 2010

похоже, что вы пытаетесь отправить данные POST на сервер?

посмотрите на этот вопрос, он может быть похожим и дать ответ

Отправка данных POST с iphone через SSL HTTPS

...