develop custom_top_html:no
default debug random = 4 / type = READ / detected = READ

비트멕스 REST API를 자바로 개발하고 있는데요.  filter 파라미터 사용때문에 난관에 봉착했습니다.

filter에 값을 줄때 JSON key value 형식으로 주도록 되어있는데 filter 값만 넣어주면 에러가 발생하네요.

 

예를 들어 GET /order 에 filter={"open": true} 값을 넣어주려고 하는데요. url 인코딩해서 요청하면 아래와 같이 401에러가 뜹니다.

 

---------------------------------------------------------------------------------------------------------------------------------------------------

url >>>> https://www.bitmex.com/api/v1/order?symbol=XBTUSD&filter=%7B%22open%22%3A%20true%7D
signature datas >>>> GET/api/v1/order?symbol=XBTUSD&filter=%7B%22open%22%3A%20true%7D1569121893
signature encoded >>>> f0fba4e4eae6d55e9f286aa5e14de821c823584f0f59bca35cb9c5160a49ee02


2019-09-22 11:11:35.164 ERROR 13520 --- [nio-8813-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 401 Unauthorized] with root cause

org.springframework.web.client.HttpClientErrorException: 401 Unauthorized

---------------------------------------------------------------------------------------------------------------------------------------------------

 

url인코딩을 안하면 아래 같은 에러가 발생하구요.

---------------------------------------------------------------------------------------------------------------------------------------------------

url >>>> https://www.bitmex.com/api/v1/order?symbol=XBTUSD&filter={"open": true}
signature datas >>>> GET/api/v1/order?symbol=XBTUSD&filter={"open": true}1569120740
signature encoded >>>> 11f847730f916adf4dee6aa030a972b71279dad2ac02d9eb3da75193e3a0d8d4


2019-09-22 10:52:20.287 ERROR 8904 --- [nio-8813-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Not enough variable values available to expand '"open"'] with root cause

java.lang.IllegalArgumentException: Not enough variable values available to expand '"open"'

---------------------------------------------------------------------------------------------------------------------------------------------------

 

 

비트멕스 사이트의 API 키 사용법에도 URL인코딩해서 값을 전송하는 것으로 되어있고, API Explore에서 filter={"open": true} 값을 넣어서 시도하면 200리턴하고, 개발자도구에서 url 찍어보면 아래처럼 똑같이 url인코딩을 해서 보냅니다.

https://www.bitmex.com/api/v1/order?filter=%7B%22open%22%3A%20true%7D&count=100&reverse=false

 

 

물론 filter 파라미터를 아예 빼버리면 값을 잘 가져오지만 filter에 JSON 형식으로 값을 보낼때 어떻게 처리해야 하는지 당최 모르겠네요. 고수님들의 조언 부탁드립니다.

 

 

 

 

 

 

 

225
댓글 2
  • 이렇게만 해주시면 답 드리기가 어려운데요. JSP에서 어떤식으로 구성했는지도 없구요...
    첫번째 케이스에서는 일단 인증 파라미터가 없어서 난 에러구요.
    두번째는 인수전달이 정상적으로 안된거구요.
  • ?
    설명이 좀 부실했군요.

    현재 제가 만든 봇은 JSP에서는 단지 ajax호출해서 자바 메소드 실행만 하고 모든 처리는 자바에서 합니다.

    JAVA단에서 REST TEMPLATE으로 API 데이터를 가져오는데요.
    URL에 파라미터 값을 줄때는 당연히 아래처럼 ?key=value&key=value&key=value 형식으로 쓰고요.
    https://www.bitmex.com/api/v1/order?symbol=XBTUSD

    그리고 GET방식일 경우 아래처럼 signature datas에도 똑같이 파라미터를 넣은 후에
    GET/api/v1/order?symbol=XBTUSD

    이것을 본문의 signature encoded 부분처럼 SHA256형식으로 인코딩한 signature를 헤더에 api-key, api-secret, api-expires와 함께 넣어서 보냅니다. 시그니처 내용이 틀리면 무조건 인증이 안되면서 401을 반환합니다.

    현재 일반적으로 파라미터를 줄때는 아무문제가 없습니다. 그런데 비트멕스 API에서 filter라는 파라미터를 사용하려면 value에 JSON형식으로 값을 여러개 넣도록 되어 있습니다. 그래서 filter 파라미터에 값을 넣어주면 URL이 아래와 같은 형식이 되는데

    https://www.bitmex.com/api/v1/order?symbol=XBTUSD&filter={"open": true,"aaa":bbb,"ccc":ddd}

    이걸 그대로 보내면 JSON 문법때문에 두번째 같은 에러가 납니다.

    비트멕스 사이트의 API키 사용법이라는 메뉴에 나와있는 샘플 코드를 보면 위의 URL을 아래처럼 URL인코딩 한 후에
    https://www.bitmex.com/api/v1/order?symbol=XBTUSD&filter=%7B%22open%22%3A%20true%7D

    시그니처도 이 상태에서 sha256으로 인코딩해서 보내도록 되어있는데요.
    그렇게 해보니 본문 첫번째 같이 에러를 뱉는다는 겁니다.

    즉, URL에 filter={"open": true,"aaa":bbb,"ccc":ddd} 이런 식의 파라미터를 줄 때 어떻게 처리해야 하는지가 궁금한 부분입니다. 사이트의 샘플코드가 잘못된 건지, 제가 영어가 짧아서 잘못 이해한 건지, 아니면 다른 방법으로 처리해야 하는지 말이죠.

    현재 이런 기능을 안쓰고 샘플봇을 만들어서 테스트 중인데 주문을 한꺼번에 여러개 넣거나, open중인 주문만 가져오지 못해서 불편한 부분이 있습니다. 해결하신 분은 조언좀 부탁드립니다.
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
1720 개발 업비트 오픈API 파이썬 래퍼 업비트오픈API를 파이썬에서 사용하기 위해 만들어 공유합니다 모든 api에 대해 구현했고 출금api외엔 모두테스트 되었습니다 파이썬으로 봇/앱 개발하시는분들은 참고하시어 성투하세요 https:/... 9 10 8239
고인원
2018.07.01
1719 개발 현재 업비트 API 주문 되시는 분? 잘 되던 주문이 갑자기 안 되는데 다른 분들을 어떠신가요?   {"error":{"message":"Jwt의 query를 검증하는데 실패하였습니다.","name":"invalid_query_payload"}}   이런 응답인데 저녁 전까지... 3 0 8175
크리
2019.04.16
1718 개발 비트코인 빌드 (윈도우) 원문 : https://bitcointalk.org/index.php?topic=149479.0 Building headless Bitcoin and Bitcoin-qt on Windows March 05, 2013, 10:26:41 PM  #1 Hi all, I recently went through the proce... 16 file 3 8125
아하하호
2014.07.03
1717 개발 무료 개인용 채굴관리 프로그램 HI Miner basic 0.4 버전 업데이트 했습니다. 무료 채굴관리 프로그램 HI Miner basic 0.4 버전 업데이트 안내입니다.   ※ 베타인 만큼 오류가 있을 수 있습니다. ※ 기존 버전 사용하시는 분들은 채굴 설정을 다시 해주시기 바랍니다. ※ 사용... 34 file 26 8115
AMDMANIA
2017.08.02
1716 질문 안녕하세여 개발자분들에게 질문좀 해도될까요^^           안녕하세용   저는 트레이딩및  소량챌굴만하는 땡글인입니다 ㅎㅎ   다름이 아니라 요새 아톰이라는 코인을 계속 공부중인데 도통 이해가 잘안되네요 ㅎㅎ   블록체인끼리 이어주는 ... 1 1 8113
냥냥뽄치
2019.06.01
1715 개발 iptime등 공유기 최대 연결허용대수 질문드립니다.           iptime등 공유기 최대 연결허용대수 질문드립니다.   채굴장을 무선으로 구성하려고 구상중입니다   100대정도 운영생각중입니다.   lg일반회선 1개 들어오는 사무실입니다 전기는 100... 9 0 8103
Dndne4
2018.01.27
1714 개발 mysql, 특정 테이블이 파티션 나누어져 있는지 아닌지 확인하는 방법 문의 며칠을 검색하고 문서를 뒤져도 알수가 없네요. 큰 테이블이 있는데, 데이터가 쌓여갈수록 쿼리 속도가 엄청나게 떨어지더군요. 그래서 파티션을 나눴던거 같은데, 확실치가 않아서 확인을 하고 ... 5 0 8058
꿀맨
2014.08.12
1713 개발 CPU 채굴 및 1개의 보드에 GPU 여러개 사용하여 최대치 채굴     큰 팁은 아니고 이미 아실분도 계시겠지만.. 채굴하면서 이것저것 테스트해본내용을 공유합니다..   저는 제온CPU + GPU 로 이더리움과 모네로를 채굴하고있습니다   다른 CPU군은 모르겠으... 10 11 7955
쉐도우마이너
2017.09.26
1712 개발 소스코드 분석 업데이트 소스코드입니다. 1. allowip 8 char 이상만 허용하는 부분입니다. ++ //+ // minimumn 8 characters for IP address, so, * or *.*.*.* will be ignored+ // need to set more detail I... 1 0 7943
아하하호
2014.07.04
1711 개발 이더리움 풀노드 전체 데이타 드립니다.   이더리움 풀노드 전체 데이타 드립니다. 이더리움 풀노드 구축해드려요.   이더리움 풀노드 구축시에  geth 로 다운로드 받을 시 20일 정도 걸리실텐데요, 서버 셋팅해주시면 geth 풀노드를 최... 16 1 7897
김대박
2021.02.21
1710 개발 주말저녁에 BitcoinYo 한글버전을 출시했습니다. 어서 코인 버셔요 ㅋㅋ;   어떻게 쓰는지 모르겠다는 문의가 좀 있어서 주말저녁에 시간내서 번역작업을 해봤습니다 . 비트코인이 뜨겁게 타오르는 시점에서 어서 주변물품 정리하셔서 비트코인 버셨으면 좋겠네요. 한국... 15 file 9 7897
이더리움링
2017.08.06
1709 개발 업비트 api 해결 되었다고 메일 왔네요 확인해 보았느데 주문 처리 되네요                       ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에 적어주세요.   비트코인... 0 7876
둔산
2019.04.16
1708 개발 비트코인의 UTXO에 대한 자료입니다. 비트코인에서 UTXO의 개념은 중요합니다. 대충 정리하여 올렸습니다. 'mastering bitcoin' by O’Reilly Media를 참조하여 정리했습니다. 제가 본 비트코인 책 중에서 가장 좋습니다.  비코 메인 ... 6 2 7830
loum
2015.04.09
1707 개발 비트코인 거래소 사이트를 개발할려고 하는데요 bitcoin CORE API로는 어플리케이션을 사용해야 가능한거 같고 JAVA 웹으로만 구현할려고 하는데요 bitcoinj나 bitcoin JSON-RPC-client 정도가 있는거 같은데 영어가 좀 딸려서 이해가 쉽진 않... 2 0 7817
zzaewung
2014.10.17
1706 개발 비트코인 채굴 프로그램 개발 문의 개발 이름 : 비트코인 채굴 프로그램 사용 언어 : VC++ / MFC 소스 여부 : 제공 실행 파일 : DLL 형식(외부 exe에서 로드 처리) 채굴 종류 : 비트코인, 이더리움, 대시, 라이트코인, 리플 개발 ... 2 0 7800
yyms
2017.07.05
1705 개발 업비트 데이터를 웹소켓으로 가져오는데요. 메인함수가 실행이 안됩니다. 아시는분좀 봐주세여 # 업비트 웹소켓 호가 조회 def on_message(ws, message): global testText get_message = json.loads(message.decode('utf-8')) # json 형태로 변경하는 방법인건 같음 print('message : ' + s... 14 0 7777
슬픈낙여
2020.03.28
1704 개발 코인 지갑 개발           안녕하세요 형님들 지금 코인/주식 커뮤니티를 만들고있습니다. 이제 회원들이 원하는 콘텐츠를 사이트내에 넣어드리려구하는데 이제 후원게시판? 을만들어서 코인지갑을 사이트내부에... 4 1 7635
련둥신
2021.02.15
1703 개발 개발자 모십니다. 마이너(마이닝 프로그램) 분석 가능하신 분. 마이너 분석 및 개선에 대한 파일럿 프로젝트를 수주할 예정입니다 1. 마이너 분석, 변경, 컴파일, 배포. 마이너라함은 마이닝 프로그램입니다. 2. c++ 3. 급여는 실력대로 원래 받으시던 만큼 ... 37 16 7606
쌍둥아빠
2017.09.26
1702 개발 채굴관리프로그램 (예스빗매니저 5.0 VER 업데이트)   안녕하세요. 채굴기 자동관리 모니터링프로그램, "예스빗 매니저" 입니다. '예스빗 메니저'는 누구나 쉽고, 빠르게 설치가 가능하지만, 다양한 알고리즘과 기술력을 통해 24시간 채굴장모니터... 3 file 2 7588
예스빗
2019.05.15
1701 질문 24시간 코드 돌릴 수 있는 방법이 뭐가 있을까요? 파이썬으로 거래프로그램 하나 짰는데... 코인은 24시간이라..24시간 돌려야하는데 그 코드 하나 돌리기위해 24시간 컴터 돌리기도 머하고... 주식매매프로그램은 9~3시30분 정도만 켜놨으면 되... 28 0 7544
jins81c
2019.01.04
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 92 Next
/ 92
default debug random = 0 / type = READ / detected = READ