net


net은  4.15.27 버전 이상 부터 제공되며 해당 라이브러리를 추가하여 사용해야 된다.

net 은 HSP 의 Operation 또는 Hub 와 통신을 쉽게 사용하는 기능을 제공한다.
확장 프레임워크 파일을 추가하여 사용할 수 있으며 추가 방법은 iOS 개발 가이드 의 내용을 참조한다.


request

HSP 의 Operation 또는 Hub 와의 네트워크 통신 기능을 제공한다. 

options

필드필드설명비고M/O
target 서버이름, OP가 미리 정의되어 있어야 함 M
path 서비스 URL 구성을 위한 path M
method HTTP 전송 방식
  • POST
  • GET  
  • PUT
  • DELETE
대소문자 구분 없음M
message Header 와 Playload 로 구성되며 서버로 전송되는 실제 패킷.
개발 시에는 서버와 비즈앱 간의 합의된 규격서를 기반으로 작성된다. 
 O
header패킷 공통 정보 O
payload전송 데이터 O
options   O
requestTimeout네트워크 read/connection timeout 값  O
attachedFilesUpload할 파일 데이터  O
     

Callback

필드설명비고M/O
successCallback응답 패킷의 내용 전달 M
errorCallback오류 메시지 전달 M
statusListenerRequest 통신 진행 상황 전달 O
    

successCallback

필드설명비고
result응답 패킷의 내용 
    

errorCallback

필드필드설명비고
e 오류 객체  
code상세 오류 코드  
message오류 메시지  
     

statusListener (Optional)

필드필드설명비고
status Request 통신 진행 상황
  • Status.STATRT : 통신 시작
  • Status.FINISH : 통신 종료
  • Status.PROGRESS : 통신 진행 상태
  
options 파일 업로드/다운로드 시 제공되는 데이터 사이즈  
totalByte전체 데이터 사이즈단위 byte 
currentByte현재 수신된 데이터 사이즈단위 byte  
     

Example

POST - 데이터 생성

let target = "hub1"
let path = "/notice/boards"
let method = "POST"
let message = [
   "header": [:],
   "payload": ["title": "[공지] iOS 18 업그레이드 패치 관련 공지",
               "contents": "[공지] iOS 18 업그레이드 패치 관련 공지",
               "postedAt": NSNumber(value: Int(Date().timeIntervalSince1970 * 1000.0))]
]
       
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards";
NSString *method = @"POST";
NSDictionary *message = @{ @"header" : @{},
                           @"payload" : @{ @"title" : @"[공지] iOS 18 업그레이드 패치 관련 공지",
                                           @"contents" : @"안녕하세요. iOS 18 업그레이드 패치 관련 내용입니다.",
                                           @"postedAt" : [NSNumber numberWithLong: (long)([[NSDate date] timeIntervalSince1970] * 1000.0)]}};
   
[DAPNet request:target
          path:path
        method:method
       message:message
       options:nil
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

POST - 파일 업로드

let target = "hub1"
let path = "/notice/boards/"
let method = "POST"
let message = ["header": [:],
              "payload": ["title": "[공지] iOS 18 업그레이드 패치 관련 공지",
                          "contents": "[공지] iOS 18 업그레이드 패치 관련 공지",
                          "postedAt": NSNumber(value: Int(Date().timeIntervalSince1970 * 1000.0))]
                ]
let options = ["requestTimeout": 50000,
              "attachedFiles": ["icon": "ios_logo.png",
                                "text": "contents.txt"]] as [String : Any]
       
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards";
NSString *method = @"POST";
NSDictionary *message = @{ @"header" : @{},
                           @"payload" : @{ @"title" : @"[공지] iOS 18 업그레이드 패치 관련 공지",
                                           @"contents" : @"안녕하세요. iOS 18 업그레이드 패치 관련 내용입니다.",
                                           @"postedAt" : [NSNumber numberWithLong: (long)([[NSDate date] timeIntervalSince1970] * 1000.0)]}
};
NSDictionary *options = @{ @"requestTimeout" : @50000,
                           @"attachedFiles" : @{ @"icon" : @"ios_logo.png",
                                                 @"text" : @"contents.txt"}
};
   
[DAPNet request:target
          path:path
        method:method
       message:message
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

GET - 전체 조회

let target = "hub1"
let path = "/notice/boards"
let method = "GET"
let options = ["requestTimeout": 50000]
   
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards";
NSString *method = @"GET";
NSDictionary *options = @{ @"requestTimeout" : @50000};
   
[DAPNet request:target
          path:path
        method:method
       message:nil
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

GET - 특정 데이터 조회

let target = "hub1"
let path = "/notice/boards"
let method = "GET"
let message = ["id": 110]
let options = ["requestTimeout": 50000]
       
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards";
NSString *method = @"GET";
NSDictionary *message = @{ @"id" : @110 };
NSDictionary *options = @{ @"requestTimeout" : @50000};

[DAPNet request:target
          path:path
        method:method
       message:message
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

GET - 파일 다운로드

let target = "hub1"
let path = "/notice/boards/13/icon.png"
let method = "GET"
let options = ["requestTimeout": 50000]

DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards/13/icon.png";
NSString *method = @"GET";
NSDictionary *options = @{ @"requestTimeout" : @50000};
   
[DAPNet request:target
          path:path
        method:method
       message:nil
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

PUT - 데이터 갱신

let target = "hub1"
let path = "/notice/boards/110"
let method = "PUT"
let message = ["header": [:],
              "payload": ["title": "[공지] iOS 18 업그레이드 패치 관련 공지 v2",
                          "contents": "안녕하세요. iOS 18 업그레이드 패치 관련 내용입니다.",
                          "postedAt": NSNumber(value: Int(Date().timeIntervalSince1970 * 1000.0))]
        ]
let options = ["requestTimeout": 50000]
       
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards/110";
NSString *method = @"PUT";
NSDictionary *message = @{ @"header" : @{},
                           @"payload" : @{ @"title" : @"[공지] iOS 18 업그레이드 패치 관련 공지 v2",
                                          @"contents" : @"안녕하세요. iOS 18 업그레이드 패치 관련 내용입니다.",
                                          @"postedAt" : [NSNumber numberWithLong: (long)([[NSDate date] timeIntervalSince1970] * 1000.0)]}
};
NSDictionary *options = @{ @"requestTimeout" : @50000};
   
[DAPNet request:target
          path:path
        method:method
       message:message
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

PUT - 데이터 갱신, 파일 업로드

let target = "hub1"
let path = "/notice/boards/110"
let method = "PUT"
let message = ["header": [:],
              "payload": ["title": "[공지] iOS 18 업그레이드 패치 관련 공지 v2",
                          "contents": "안녕하세요. iOS 18 업그레이드 패치 관련 내용입니다.",
                          "postedAt": NSNumber(value: Int(Date().timeIntervalSince1970 * 1000.0))]
        ]
let options = ["requestTimeout": 50000,
              "attachedFiles": ["icon": "ios_logo.png",
                                "text": "contents.txt"]] as [String : Any]

       
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards/110";
NSString *method = @"PUT";
NSDictionary *message = @{ @"header" : @{},
                           @"payload" : @{ @"title" : @"[공지] iOS 18 업그레이드 패치 관련 공지 v2",
                                           @"contents" : @"안녕하세요. iOS 18 업그레이드 패치 관련 내용입니다.",
                                           @"postedAt" : [NSNumber numberWithLong: (long)([[NSDate date] timeIntervalSince1970] * 1000.0)]}
};
NSDictionary *options = @{ @"requestTimeout" : @50000,
                           @"attachedFiles" : @{ @"icon" : @"ios_logo.png",
                                                 @"text" : @"contents.txt"}
};
   
[DAPNet request:target
          path:path
        method:method
       message:message
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

DELETE - 데이터 삭제

let target = "hub1"
let path = "/notice/boards/110"
let method = "DELETE"
let options = ["requestTimeout": 50000]
       
DAPNet.request(target,
                path: path,
                method: method,
                message: message,
                options: options,
                completion: { [self] resultDict in
                   // todo
                },
                failure: { [self] error in
               // todo
                })
NSString *target = @"hub1";
NSString *path = @"/notice/boards/110";
NSString *method = @"DELETE";
NSDictionary *options = @{ @"requestTimeout" : @50000};
   
[DAPNet request:target
          path:path
        method:method
       message:nil
       options:options
    completion:^(NSDictionary *) {
       // TODO
   } failure:^(NSError *){
       // TODO
   }
];

Error Code

CodeCauseComment
E12800파라메터 값이 잘못되어 있을 경우 
E12801전달된 액션 값이 알 수 없는 액션일 경우 
E12802통신할 서버 이름이 null 이거나 빈 값이고 설정 정보에 없는 경우 
E12803서비스 정보가 null 이거나 빈 값인 경우 
E12804데이터 전송 방식이 post, get, put, delete 외 다른 값인 경우 
E12805타임아웃이 0~2147483647 사이의 정수값이 아닌 경우 
E12806서버로 업로드 할 첨부 파일 정보가  잘못되어 있을 경우 
E12807서버로 전송되는 패킷 공통 정보가 잘못되어 있을 경우 
E12808서버로 전송되는 전송 데이터가 잘못되어 있을 경우 
E12850실행 중 오류가 발생 되었을 경우 
E12851실행 중 업로드할 파일이 존재하지 않을 경우  
E12852서버로 부터 전달받은 응답 메시지가 없는 경우 
E12853서버로 부터 전달받은 응답 메시지가 잘못되어 있는 경우 
E12899알 수 없는 오류가 발생 되었을 경우