2017-03-02 4 views
2

WebSocket/SignalR 응답에서 "\ n"이 표시되고 이유를 파악할 수 없습니다. 응답 객체의 데이터 유형을 변경하려고 시도했지만 JSON 인 것처럼 파싱했지만 여전히 "\ n"을 제거 할 수 없습니다.websocket/SignalR 응답에서 " n"을 얻으시겠습니까?

이 "\ n"을 제거하고 다른 JSON 객체/응답처럼 처리 할 수 ​​있습니까? 참조

코드 :

-(void)SignalR{ 

    WebServices *services = [[WebServices alloc] init]; 

    SRHubConnection *hubConnection = [SRHubConnection connectionWithURLString:@"xxx"]; 

    SRHubProxy *proxy = [hubConnection createHubProxy:@"xxx"]; 

    [services callGetSRAlertGroupNames:^(NSMutableArray *alertGroupNameArray){ 
     NSLog(@"SR ALERT GROUP NAMES: %@", alertGroupNameArray); 

     [services callGetSRNotificationGroupNames:^(NSMutableArray *notificationGroupNameArray) { 
      NSLog(@"SR NOTIFICATION GROUP NAMES: %@", notificationGroupNameArray); 

      NSArray *combinedArray=[alertGroupNameArray arrayByAddingObjectsFromArray:notificationGroupNameArray]; 

      // Register for connection lifecycle events 
      [hubConnection setStarted:^{ 

       NSLog(@"Connection Started"); 

       for (NSString *groupName in combinedArray){ 
        [proxy invoke:@"Subscribe" withArgs:@[groupName] completionHandler:nil]; 
       } 

      }]; 
      [hubConnection setReceived:^(NSString *data) { 

       NSLog(@"CONNECTION RECIEVED - %@",data); 

      }]; 
      [hubConnection setConnectionSlow:^{ 
       NSLog(@"Connection Slow"); 
      }]; 
      [hubConnection setReconnecting:^{ 
       NSLog(@"Connection Reconnecting"); 
      }]; 
      [hubConnection setReconnected:^{ 
       NSLog(@"Connection Reconnected"); 
      }]; 
      [hubConnection setClosed:^{ 
       NSLog(@"Connection Closed"); 
      }]; 
      [hubConnection setError:^(NSError *error) { 
       NSLog(@"Connection Error %@",error); 
      }]; 

      [hubConnection start]; 

     }]; 
    }]; 
} 

로그 아웃 응답 샘플 :

CONNECTION RECIEVED - { 
    A =  (
     "{ 
\n \"NotificationType\": 1, 
\n \"TelemetryDetails\": { 
\n \"serialNumber\": \"xxx\", 
\n \"name\": \"sf-top\", 
\n \"statusId\": 2, 
\n \"buildVersion\": \"xxx\", 
\n \"securityModeId\": 2, 
\n \"IP\": \"xxx\", 
\n \"priority\": 1, 
\n \"bandwidthUpload\": 0.00, 
\n \"bandwidthDownload\": 0.00, 
\n \"bandwidthInternal\": null, 
\n \"totalBandwidthUpload\": 3107397.00, 
\n \"totalBandwidthDownload\": 8078656.00, 
\n \"totalBandwidthInternal\": null, 
\n \"usage\": \"8078656/3107397\", 
\n \"lastUpdateTime\": \"2017-03-02T16:27:57.1736937Z\", 
\n \"buildVersionUpdatingInProgress\": false, 
\n \"transportType\": 2, 
+1

신호 R에 대한 정상적인 응답이 아닌 제 경험으로는 백엔드가 정보를 보내도록 설정되어있는 기회가 있습니다.이를 체크 아웃 했습니까? – Kiley

답변

1

간단한.

당신은 사용할 수 있습니다 : 문제가 분명히 웹 서비스에서오고 있기 때문에

data = [data stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

그러나이 트릭은 "더러운", 나는 생각한다.

편집 :

교체 할 발생?

이 로그는 무엇입니까?

[hubConnection setReceived:^(NSString *data) { 

     NSLog(@"CONNECTION RECIEVED - %@",data); 
     NSString *newString = [data stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
     NSLog(@"NEW STRING - %@", newString); 
    }]; 

편집 2 :

확인 당신이 완료 핸들러 외부에서이 변수를 추가 할 수 있습니다.

__block NSString *newString; 

아니면이

[hubConnection setReceived:^(NSString *data) { 

      NSLog(@"CONNECTION RECIEVED - %@",data); 

      [self replaceOccurrences: data]; 

}]; 

- (void)replaceOccurrences:(NSString *)data { 
    NSString *newString = [data stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
    NSLog("New String = %@", newString); 
} 

을 시도 할 수 있습니다하지만 당신이 정말로 당신의 백엔드를 확인해야합니다,이 반응은 적절한 형식이 아닙니다.

+0

불행히도이 줄은 사전임을 나타냅니다. 내 데이터 개체를 NSDictionary로 만들면 그 사전을 로깅하면 여전히 "\ n"이됩니다. 데이터 전송 방법에 문제가있을 수 있습니다. – arcade16

+0

다음 문으로 인해 다음 오류가 발생합니다. - [__ NSDictionaryI stringByReplacingOccurrencesOfString : withString :] : 인식 할 수없는 선택자가 인스턴스 0x6180002665c0으로 전송되었습니다. – arcade16