develop custom_top_html:no
default debug random = 1 / type = READ / detected = READ / doc_Srl = 11504675

비트멕스 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
  • profile
    컴빠 2019.09.28 14:47
    이렇게만 해주시면 답 드리기가 어려운데요. JSP에서 어떤식으로 구성했는지도 없구요...
    첫번째 케이스에서는 일단 인증 파라미터가 없어서 난 에러구요.
    두번째는 인수전달이 정상적으로 안된거구요.
  • ?
    제타마인드 2019.09.28 22:21
    설명이 좀 부실했군요.

    현재 제가 만든 봇은 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
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 로그인이 안되시는 분은 문의해주시기 바랍니다. 4 4 2181
땡글개발자
2019.08.21
1700 질문 iquidus explorer 를 사용하려고 하는데요 라이트코인 포크떠서 메인넷 구축했습니다   iquidus 를 사용해서 explorer웹사이트를 구축해보려는데 서버노드와 같은곳에 설치가 아닌   다른 물리적서버에 iquidus를 둬서 이용해보려고 하는데   이게 옳은 방법인... 2 1 699
김깡
2019.10.14
1699 개발 블록체인 Fintech 과정/ 리브라 개발자 과정 / FPGA AI/Mining과정 수강생모집합니다.   블록체인기반 Fintech 개발자 과정 교육생 모집합니다. https://www.ddengle.com/admarket/11546007   저희 회사에서 주관으로 운영하는 교육과정입니다. 많은 관심 바라겠습니다. 주변에 많은 홍보 부탁드립니다. ... 2 980
안씨아저씨
2019.10.10
1698 개발 초 간단 web3 최신을 사이트에 적용하기 이더리움에서 제공하는 web3js를 이용해서 Dapp을 개발하려면 약간의 당황스러움을 경험하게 됩니다.   1) 상당수의 문서가 낡았고, 2) 상당수의 문서는 구버전의 web3에 대해서 설명하고 있고 3) 상당수의 문서는 re... 1 file 8 1614
ethminer
2019.10.05
1697 질문 지금 이더스캔 Ropsten network 이상한것 맞죠? https://ropsten.etherscan.io/   테스트넷에서 작업중인데 컨펌도 안되고   블록도 5분간격으로 업데이트 되는게 좀 이상하다 싶어서   다른 ropsten 익스플로어 보니깐 블록 개수부터 차이나네요   https://teth.bi... 4 1 1489
낙동강2995번개미
2019.10.01
1696 질문 지난 모든 시세를 제공하는 거래소가 있나요?   거래 투자 봇을 개발해보려고 합니다. 개발이야 어떻게든 하면 되는데, 시세에 따라서 매수/매도를 해야 하니 결국 현재시세를 계속 저장해야 하겠더라구요. 저장도 하면 되긴 하지만, 제대로 개발하려면 지난 시세... 2 1 1625
비폭력무저항
2019.09.28
1695 질문 빗썸 글로벌(pro) REST-API 질문입니다.   빗썸 글로벌(pro) REST-API 요청시 API키값입력이 필요한 기능을 이용하려고 합니다(소유중인 코인 확인등등).   코인코드등의 일반 API는 불러오고 있으나 문서를 봐도 권한이 필요한 API 요청시 보내는 방식등을 ... 1 1730
나무나루
2019.09.23
질문 비트멕스(bitmex) REST API 개발시 filter 파라미터 질문입니다. 비트멕스 REST API를 자바로 개발하고 있는데요.  filter 파라미터 사용때문에 난관에 봉착했습니다. filter에 값을 줄때 JSON key value 형식으로 주도록 되어있는데 filter 값만 넣어주면 에러가 발생하네요.   예... 2 1703
제타마인드
2019.09.22
1693 개발 SAMSUNG blockchain wallet 보안이슈       1.휴대폰 스미싱 문자의 url을 실수로 터치해 접속했을 때 스마트폰에 악성 프로그램이 무단설치돼고 그 스마트폰의 화면은 해커가 고스란히 전부 엿볼 수 있음   2.해커에 의해 key store file탈취 당할 수 있... 2 4 2012
cryptomoney
2019.09.19
1692 질문 코인마켓캡의 진정한 가치가... 온몸으로 느껴지네요...   코인마켓캡의 API제한이 걸려...(무료)   마이닝풀허브의 모든 코인이 상장된 1%이상 거래량을 가지고 있는 거래소를 전부 나열했더니...   아래와 같이 비중복 52개의 거래소의 API를 긁어와야하는 사태가 벌어지... 5 2 2334
컴빠
2019.09.09
1691 개발 XE 게시판 web3 모듈 예제 강좌 #1 현재 ESN 게시판 이외에 이더리움 주소가 다음과 같은 식으로 표시되고 있습니다.   0x9c21660ec4Ba6d1b36aEcff56186dF408D645473     이더리움 주소의 앞부분에 붙는 아이콘을 일명 Blockie라고 부르는 아이덴티콘이... 2 file 1971
ethminer
2019.09.04
1690 질문 비트코인 계열의 txid 와 관련 하여 질문있습니다. 비트코인 계열의 알트코인을 이용하여 어플 지갑을 만들고 있습니다.    지갑 기능 중 거래내역을 보여주는 기능이 있는데 어플에서 뿐만 아니라 외부 거래소, 웹 지갑에서 발생된 거래내역도 보여주려고 합니다.    ... 1 2408
나비잠
2019.08.30
1689 질문 BIP-39에 대해 질문있습니다. BIP-39는 지갑주소를 기억하기가 어렵기 때문에 쉽게 기억하라는 용도인건가요?   BIP-39는 지갑 생성, 지갑 파일을 잃어버렸을때  복구 할 때 사용하는 용도인가요?   비트코인 기반의 소스들은 개발자가 원하면 사... 1 2 2442
나비잠
2019.08.26
1688 개발 미래의 기술     비트는 최초의 블록체인이라서  위변조 불가능 public blockchain 기술에 메리트가 있고 이더는 smart contract이란 조건에 충족되면 자동계약돼 결제되는 기능 때문에 미래에 로봇과 기계간 금융거래에 다양하게... 2 2 2566
핵심코어보기
2019.08.24
1687 개발 프라이빗 장부는 신뢰 불가능!     신뢰란 무엇인가? 친구에게 빌려준 돈은 잘 기억납니다   여러분들이 사채업자라고 가정해봅시다 10명에게 돈을 빌려줬다면 기억할 수 있습니다   100명에게 돈을 빌려줬다면 기억은 불가능하고 장부를 써야합니... 3 1 2525
핵심코어보기
2019.08.23
1686 개발 노드 안정성과 코인의 관계       코인에 수 천 ~수 억원의 거액을 투자하는 분들은 항상 해킹의 위험에 불안해 합니다 사람들은 부동산과 은행처럼 믿을 수 있고 안정적인 투자 대상을 찾습니다   비트의 경우 해커가 초창기2010년  프로토콜 ... 1 2231
핵심코어보기
2019.08.23
1685 개발 XRP 이체 처리 방법 아시는 분 연락 부탁합니다(수고비드림) PHP 소스 작성 1.XRP 입금 계정 만들기 2.입금 확인 방법 3.XRP 이체 방법   처리 방법을  알려주세요.   카톡아이디:imbctab63 수고비 드립니다. 꼭 도아주세요!!!                     4 2301
부자대박
2019.08.20
1684 개발 관심있는 개발자 분들의 많은 참여 부탁드립니다~   요즘 진행 중인 프로젝트입니다. 안전한 랜덤넘버를 얻고 이를 활용하기 위한 체인입니다. 프로젝트명은 DecentRandom입니다.   웹사이트는 https://decentrandom.com 입니다.   위 사이트에 백서나 github 링크가 ... 1 1 2154
kiwi
2019.08.18
1683 개발 [무료강좌] 거래소 개발 무료강좌 장소/일시 공유드립니다.   [무료강좌] 거래소 개발 무료강좌 장소/일시 공유드립니다. 참여 메일보내신 분들 대상으로 개별 메일 보내드렸습니다~ 확인하시고, 주말까지는 답볍꼭 주시면 감사하겠습니다                     1 2109
coinext
2019.08.16
1682 개발 라이트코인의 개발상황 직접 보기 부제: 코인별 개발자의 개발활동 직접 살펴보기 라이트코인의 개발자가 개발 활동을 많이 하지 않는다는 정보가 최근에 유출되었다고 해서 이슈가 되고 있습니다.   사실 대부분의 코인은 오픈소스 정책을 사용하고 ... 18 file 1 2319
ethminer
2019.08.11
1681 개발 쿼키 코인의 가치     옛날에는 그 가치를 몰랐는데 최근에 곰곰히 잘 생각해보니 쿼키코인의 가치는 실로 엄청난 거였습니다   여러분은 삭제할 수 없는 블록체인의 특성을 잘 아실 것입니다 삭제하려면 국가든 경찰이든 정부든 그게 ... 5 2233
내가총대멘다
2019.08.10
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 85 Next
/ 85
PC debug / slots = 2 / size = 0 / random = 1