develop custom_top_html:no
default debug random = 0 / 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중인 주문만 가져오지 못해서 불편한 부분이 있습니다. 해결하신 분은 조언좀 부탁드립니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 땡글 경매 5탄!! 암호화폐 하드월렛 Ledger Nano S 5 newfile 9 122
ESN경매
2019.12.06
공지 가칭 "땡글 지갑" 베타테스터를 모집합니다. 25 file 15 866
땡글개발자
2019.11.15
공지 로그인이 안되시는 분은 문의해주시기 바랍니다. 4 5 2559
땡글개발자
2019.08.21
1710 질문 고팍스 API 암호화폐 출금?   고팍스 API를 보고 있는데 출금에 대한 예제가 없네요.   혹시 코인원처럼 고팍스도 API로는 암호화폐 출금이 불가능한가요?                 0 138
skeee01
2019.11.30
1709 개발 V SYSTEMS 테스트넷 접속 방법입니다.   VSYS의 슈퍼노드 후보로 등록한 홍콩의 마이닝풀 Forbole에서는 미디엄 블로그를 통해 VSYS의 테스트넷 액세스 방법을 공유하였습니다.    출처: https://medium.com/forbole/joining-v-systems-testnet-69b6cd5ee3... file 2 113
아수라발발타KYC
2019.11.27
1708 개발 홍보글은 아니고 private blockchain 개발에 참조하시라고 올립니다      private blockchain은 폐쇄돼있어 회사 관계자 외에는 장부를 아무도 못봅니다 은행들이 이 private blockchain 방식을 취하고 있고 국제 국내 은행들은 이런 방식을 취할 수밖에 없습니다 암호화기술은 컴퓨터... 3 2 95
핵심코어보기
2019.11.26
1707 질문 EOS 에서 RAM,CPU,NET 에 EOS 할당후 서비스 접을 때 EOS 를 다시 빼올 수 있나요?     최근 EOS 토큰을 제작하고 잘 사용하고 있습니다.   최근 EOS 토큰 발송이 실패될 때가 있습니다. 그래서 RAM,CPU,NET 이 부족해서 100만원  EOS 는 더 투입하였습니다. 그런데 또 간혹 발생을 하고 있습니다. 그... 1 2 93
김대박
2019.11.26
1706 개발 [질문]지갑 언락 프로세스 진행 시 결과 값이 null 으로 나오는 경우 어떻게 처리 하면 되는지 질문드립니다. 안녕하세요.  web3j 으로 지갑을 현재 만들고 있습니다.  문의 점이 두가지 정도가 있는데요..  1.질문 내용 1) web3j.personalUnlockAccount 함수 결과값이 null 으로만 나옵니다..ㅠㅠ 2) personalUnlockAccount 파... 1 0 43
jun98
2019.11.25
1705 질문 [질문] EOS 트랜잭션 데이타값 가져오기? 이오스 전자웹지갑을 제작하였습니다.   트랜잭션 데이터를 가져오기 위해서 cleos 로 BP 들의 URL 을 활용하였는데 이게 언젠가부터 없어지기 시작하더니 서비스가 종료가 되었네요. 여러분들은 이 부분을 어떻게 처... 5 0 145
김대박
2019.11.16
1704 질문 블록체인 관련 지식을 많이 가지고 있으신 프로그램 개발자 혹은 앱개발자 분들의 고견듣고 싶습니다. 안녕하세요 ..  지금 파주에서 코인이 오르기만을 기다리고 있는 채굴러입니다.  코인을 채굴을 하고 있지만 블록체인에 대한 이해도는 참 답답할만큼 없습니다.      제가 프로그램에 지식이 전혀 없고 블록체인 관... 3 1 244
휘리릭릭릭릭
2019.11.10
1703 개발 Geth v1.9.7 (Quad Kicker) 릴리스 Geth 1.9.7이 나왔다는 소식입니다   블록 9,069,000 // 12월 4일경이 될거라는군요~   이하 현재 이더리움 1.x개발 수장이 남긴 트윗을 같이 참고하시기 바랍니다. Geth v1.9.7 (Quad Kicker) out, enabling the Ist... 1 364
ethminer
2019.11.08
1702 질문 이더리움 2.0이 되면 현재 보유중인 이더와 토큰에 영향이 있나요? 이더리움 2.0이 되면 현재 보유중인 이더와 지갑주소, 그리고 보유중인 토큰에 영향이 있나요?   예를들자면, 이더리움과 ERC 기반의 토큰에 아래에 해당하는 영향이 있는지 문의 드립니다     1. 이더를 보관중인 개... 2 1 693
he123
2019.11.07
1701 개발 웹지갑을 만드려는데 질문좀 드립니다~ 라이트코인 포크뜬 알트코인입니다...   bitcoinjs를 사용해서 웹지갑을 만드려고 하는데 알트코인이다 보니 네트워크 쪽에 값을 적어줘야 연동이 될거 같은데...   잘 모르겠더라고요ㅠㅠ   혹시 연동 방법이나 다른... 2 2 836
김깡
2019.10.31
1700 질문 iquidus explorer 를 사용하려고 하는데요 라이트코인 포크떠서 메인넷 구축했습니다   iquidus 를 사용해서 explorer웹사이트를 구축해보려는데 서버노드와 같은곳에 설치가 아닌   다른 물리적서버에 iquidus를 둬서 이용해보려고 하는데   이게 옳은 방법인... 2 1 1812
김깡
2019.10.14
1699 개발 블록체인 Fintech 과정/ 리브라 개발자 과정 / FPGA AI/Mining과정 수강생모집합니다.   블록체인기반 Fintech 개발자 과정 교육생 모집합니다. https://www.ddengle.com/admarket/11546007   저희 회사에서 주관으로 운영하는 교육과정입니다. 많은 관심 바라겠습니다. 주변에 많은 홍보 부탁드립니다. ... 2 1871
안씨아저씨
2019.10.10
1698 개발 초 간단 web3 최신을 사이트에 적용하기 이더리움에서 제공하는 web3js를 이용해서 Dapp을 개발하려면 약간의 당황스러움을 경험하게 됩니다.   1) 상당수의 문서가 낡았고, 2) 상당수의 문서는 구버전의 web3에 대해서 설명하고 있고 3) 상당수의 문서는 re... 1 file 8 2471
ethminer
2019.10.05
1697 질문 지금 이더스캔 Ropsten network 이상한것 맞죠? https://ropsten.etherscan.io/   테스트넷에서 작업중인데 컨펌도 안되고   블록도 5분간격으로 업데이트 되는게 좀 이상하다 싶어서   다른 ropsten 익스플로어 보니깐 블록 개수부터 차이나네요   https://teth.bi... 4 1 2098
낙동강2995번개미
2019.10.01
1696 질문 지난 모든 시세를 제공하는 거래소가 있나요?   거래 투자 봇을 개발해보려고 합니다. 개발이야 어떻게든 하면 되는데, 시세에 따라서 매수/매도를 해야 하니 결국 현재시세를 계속 저장해야 하겠더라구요. 저장도 하면 되긴 하지만, 제대로 개발하려면 지난 시세... 2 1 2191
비폭력무저항
2019.09.28
1695 질문 빗썸 글로벌(pro) REST-API 질문입니다.   빗썸 글로벌(pro) REST-API 요청시 API키값입력이 필요한 기능을 이용하려고 합니다(소유중인 코인 확인등등).   코인코드등의 일반 API는 불러오고 있으나 문서를 봐도 권한이 필요한 API 요청시 보내는 방식등을 ... 1 0 2198
나무나루
2019.09.23
질문 비트멕스(bitmex) REST API 개발시 filter 파라미터 질문입니다. 비트멕스 REST API를 자바로 개발하고 있는데요.  filter 파라미터 사용때문에 난관에 봉착했습니다. filter에 값을 줄때 JSON key value 형식으로 주도록 되어있는데 filter 값만 넣어주면 에러가 발생하네요.   예... 2 0 2220
제타마인드
2019.09.22
1693 개발 SAMSUNG blockchain wallet 보안이슈       1.휴대폰 스미싱 문자의 url을 실수로 터치해 접속했을 때 스마트폰에 악성 프로그램이 무단설치돼고 그 스마트폰의 화면은 해커가 고스란히 전부 엿볼 수 있음   2.해커에 의해 key store file탈취 당할 수 있... 2 4 2633
cryptomoney
2019.09.19
1692 질문 코인마켓캡의 진정한 가치가... 온몸으로 느껴지네요...   코인마켓캡의 API제한이 걸려...(무료)   마이닝풀허브의 모든 코인이 상장된 1%이상 거래량을 가지고 있는 거래소를 전부 나열했더니...   아래와 같이 비중복 52개의 거래소의 API를 긁어와야하는 사태가 벌어지... 5 2 3112
컴빠
2019.09.09
1691 개발 XE 게시판 web3 모듈 예제 강좌 #1 현재 ESN 게시판 이외에 이더리움 주소가 다음과 같은 식으로 표시되고 있습니다.   0x9c21660ec4Ba6d1b36aEcff56186dF408D645473     이더리움 주소의 앞부분에 붙는 아이콘을 일명 Blockie라고 부르는 아이덴티콘이... 2 file 0 2727
ethminer
2019.09.04
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 86 Next
/ 86
PC debug / slots = 2 / size = 0 / random = 0