手機ios端經過json的方式經過socket通信的坑

        由於要適時獲取後臺的數據,因此通信方式用了socket,而後問了後臺協議,和傳參,經過json方法,傳遞過去,json

      由於socket通信用的是AsyncSocket這個框架,首先我確定要發送請求,[m_socket writeData:data withTimeout:-1 tag:0];,經過這  NSData *data= [[NSString stringWithFormat:@"%@\r\n",[dict JSONRepresentation]] dataUsingEncoding: NSUTF8StringEncoding];
    [m_socket writeData:data withTimeout:-1 tag:0];
   
    NSData *data = [dict JSONRepresentation]
   
個方法,這個data通常就是NSData類型,而後json數據類型不就是
框架

 {"ask":"1.52841","bid":"1.52813","comment":"aa","symbol":"GBPUSD","cmd":0,"count":1,"login":420000179,"sl":0,"tp":0,"volume":1}

  這種相似於oc中字典的類型嗎,而後字典轉換成NSData類型不就能夠了嗎?因而就有了下面這段代碼socket

  NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];

     而後在這裏說一下,option參數問題,百度的通常是spa

 NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONWritingPrettyPrintederror:&error];

  這樣會使要發送的json字段分紅一段一段的,是分開的,經過後臺證實的,code

   NSData  *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];orm

仍是不對,發送過去的事二進制數據,沒法解析,最後不得不用了SBJSOn框架,有封裝好的轉JSon方法cmd

   NSData *data= [[NSString stringWithFormat:@"%@\r\n",[dict JSONRepresentation]] dataUsingEncoding: NSUTF8StringEncoding];
    [m_socket writeData:data withTimeout:-1 tag:0];
    
    NSData *data = [dict JSONRepresentation]

注意:"\r\n",是表明包的結尾,我這裏是這個的,其餘環境可能不一樣,而後搞定。string

相關文章
相關標籤/搜索