debug random = 0

 

안녕하세요,

 

코인원 API를 사용하고 싶은데 문제가 있어서 고수님들의 도움이 필요합니다ㅠ

 

예제처럼 파이썬으로 개발하는건 아니고 자바로 코드 변경해서 제작중입니다.

 

API중 limit_buy 을 사용하고 싶은데 계속 V2 API body is corrupted 에러가 납니다.

 

https://api.coinone.co.kr/v2/order/limit_buy/

 

코인원 API에 나와있는데로 encoded_payload를 body로 넘겨주는데 도데체 왜그러는걸까요ㅠㅠ

 

혹시 비슷한 문제가 있었던 분이 계실까요?ㅠ

 

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

def get_response(action, payload):

    url = '{}{}'.format('https://api.coinone.co.kr/', action)

    encoded_payload = get_encoded_payload(payload)

    headers = {
        'Content-type': 'application/json',
        'X-COINONE-PAYLOAD': encoded_payload,
        'X-COINONE-SIGNATURE': get_signature(encoded_payload),
    }

    http = httplib2.Http()
    response, content = http.request(url, 'POST', body=encoded_payload, headers=headers)

    return content

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

 

고수님들 조언 부탁드립니다ㅠㅠ

 

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

public void sendTest(String strHost, String strMemod, HashMap<String, Object> rgParams,  HashMap<String, String> httpHeaders){
        try {
            // Define the server endpoint to send the HTTP request to
            Integer nNonce = usecTime();
            JSONObject payload = getCoinonePayload(api_key, nNonce, rgParams);                      
            String encodedPayload = getEncodedPayload(payload.toString(), api_secret);
            String signature = getSignature(encodedPayload, api_secret.toUpperCase()); 
            
            
            URL serverUrl = 
            new URL(strHost);
            HttpURLConnection urlConnection = (HttpURLConnection)serverUrl.openConnection();

            // Indicate that we want to write to the HTTP request body
            urlConnection.setDoOutput(true);
            urlConnection.setRequestMethod("POST");                       
            urlConnection.setRequestProperty("Content-Type", "application/json");
            urlConnection.setRequestProperty("X-COINONE-PAYLOAD", encodedPayload);
            urlConnection.setRequestProperty("X-COINONE-SIGNATURE", signature);
                        
            
            // Writing the post data to the HTTP request body
            BufferedWriter httpRequestBodyWriter = 
                    new BufferedWriter(new OutputStreamWriter(urlConnection.getOutputStream()));
            
            
            httpRequestBodyWriter.write(encodedPayload);
            httpRequestBodyWriter.close();

            // Reading from the HTTP response body
            Scanner httpResponseScanner = new Scanner(urlConnection.getInputStream());
            while(httpResponseScanner.hasNextLine()) {
                System.out.println(httpResponseScanner.nextLine());
            }
            httpResponseScanner.close();
    
        } catch (ProtocolException ex) {
            Logger.getLogger(CoinoneApi.class.getName()).log(Level.SEVERE, null, ex);
        } catch (MalformedURLException ex) {
            Logger.getLogger(CoinoneApi.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(CoinoneApi.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

 

 public String getEncodedPayload(String payload, String apiSecret){          
        String encodedPayload = asHex(hmacSha512(payload, apiSecret));
          
        return encodedPayload;
    }
   
    public String getSignature(String encodedPayload, String apiSecret){                 
        String signature = asHex(hmacSha512(encodedPayload, apiSecret));       
                
        return signature;        
        
    }

 

 public JSONObject getCoinonePayload(String accessToken, Integer nonce, HashMap<String, Object> rgData){                        
          
        JSONObject payload = new JSONObject();       
        payload.put("access_token", accessToken);   
        payload.put("nonce", nonce);    
                       
        for(Map.Entry<String, Object> entry : rgData.entrySet()){
            payload.put(entry.getKey(), entry.getValue());
        }
               
                                       
        return payload;
    }

----------

 

payload는 아래와 같습니다.

{"access_token":"my access_token","price":1902,"qty":1.3287,"currency":"XTZ","nonce":1557935577}

 

 

 

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

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에 적어주세요.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

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

댓글 8
  • profile
    isul 2019.05.15 13:24
    적용한 코드가 없어서 뭐라 답변 드리기가...
  • ?
    skeee01 2019.05.16 00:46
    코드 첨부하였습니다.. 여러 클래스로 나눠져 있다보니 첨부하기가 애매해서 하나로 코드 수정했습니다.ㅜ
  • profile
    isul 2019.05.16 09:48
    urlConnection.setRequestProperty("X-COINONE-PAYLOAD", encodedPayload); 전에 아래 코드 추가해보세요.
    urlConnection.setRequestProperty("Content-Type", "application/json");
  • ?
    skeee01 2019.05.16 17:57

    @isul
    답변 감사합니다... 제가 코드에 json으로 타입변경하는걸 빼먹었었네요... 콘텐츠 타입 변경 코드를 추가해도 여전히 같은 문제가 있습니다ㅠ
    "V2 API body is corrupted"

  • profile
    isul 2019.05.16 21:42
    "X-COINONE-PAYLOAD"는 payload를 base64로 인코딩한 값을 보내야 되는데요.
    위 코드에는 hmacSha512을 사용했네요.
  • profile
    isul 2019.05.16 23:05
    추가로 아래 코드의 getSignature()할 때 api_secret을 대문자로 변환하지 말고, 발급받은 그대로를 사용하세요.
    String signature = getSignature(encodedPayload, api_secret.toUpperCase());
  • ?
    skeee01 2019.05.17 00:04
    작성자가 삭제한 댓글입니다
  • ?
    skeee01 2019.05.17 00:15
    @isul
    감사합니다 덕분에 잘 해결하였습니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 [Air Drop 이벤트] 게시판을 신설합니다 11 updatefile 12726
땡글운영위원회
2019.05.17
공지 [땡글] (주)이에스엔운영 채용공고 15 file 2 3031
ESN운영
2019.05.14
[AD] [AD] ESN으로만 신청 가능한 광고자리입니다. 14 11839
관리자
2019.01.02
1647 개발 코인원 API 송금(Withdrawal) 비트코인만 되나요?   코인원 API 문서를 보니 Send는 Send BTC만 있는데요..   https://doc.coinone.co.kr/#operation/v2_transaction_btc   다른 코인들은 API로 전송이 안되는건가요?   아니면 request 주소만 https://api.coinone.co... 2 4789
skeee01
2019.05.17
1646 개발 비트코인과 이더리움의 다른 점   코인 개발과 이더리움을 보유하고 계신 분들은 반드시 알아야 하는 필수 경제학 정보입니다   아래 youtube 다큐 내용을 요약하면  미국 달러의 문제점울 지적하고 있으며 달러는 최후엔 멸망할 것이라고 알려주고 ... 3 1 6143
핵심코어보기
2019.05.17
1645 개발 채굴관리프로그램 (예스빗매니저 5.0 VER 업데이트)   안녕하세요. 채굴기 자동관리 모니터링프로그램, &quot;예스빗 매니저&quot; 입니다. '예스빗 메니저'는 누구나 쉽고, 빠르게 설치가 가능하지만, 다양한 알고리즘과 기술력을 통해 24시간 채굴장모니터링 및 관리 자동화를 ... 3 file 1 867
예스빗
2019.05.15
» 질문 코인원 API 에러 - V2 API body is corrupted (코드 첨부)   안녕하세요,   코인원 API를 사용하고 싶은데 문제가 있어서 고수님들의 도움이 필요합니다ㅠ   예제처럼 파이썬으로 개발하는건 아니고 자바로 코드 변경해서 제작중입니다.   API중 limit_buy 을 사용하고 싶은데... 8 515
skeee01
2019.05.12
1643 질문 총 채굴 기간 변경     안녕하세요 ~ 질문 하나만 드릴게요 (알트코인 기준입니다)   만약 선채굴 90억개 이후 5억개의 코인을 100년에 걸쳐서 채굴하게 끔 코딩을 했는데요 여기서 실수로 2번 블록부터 마지막 블록까지의 채굴량이 마... 3 853
페어
2019.05.11
1642 질문 하이퍼레저 구조 질문..       하이퍼레저 패브릭으로 프라이빗 블록체인 환경을 구축했을때,   1. 블록체인 내에서 루트 권환을 가지는 관리자가 따로 있나요? 1-1 있다면, 그 관리자는 모든 거래를 관리하고 데이터들을 열람할 수 있나요? ... 271
네탈
2019.05.10
1641 질문 'icloud 드라이브'로 파일을 다운로드하려면 어떻게해야합니까? 혹은 onmyphone 생성 권한 얻는법               위에 사진과 같이 keynote폴더나 numbers처럼  onmyiphone에 폴더를 만들수 있는 방법이 있나요?   네이버 클라우드 같은 경우 저장공간 권한을 획득한 후 바로 폴더를 자동 다운로드 하는것 같던데 경... 1 file 308
developerTH
2019.05.10
1640 질문 컴맹이 거래소 api 적용할 수 있을까요?       안녕하세요. 염치 불구하고 질문드립니다 ㅠㅠ 단도직입적으로 말씀 드리면 독학으로 유투브 파이썬 기초강좌로 거래소 api로 계좌확인 가능할까요? 거래소 api에 계좌 현황을 준다고 해서요. 가입한 거래소들... 6 794
동네강아지153
2019.05.09
1639 질문 콜드월렛관련 질문있습니다.   렛저, 트레저 등의 기업에서 판매하는 하드웨어 콜드월렛 장치안에 실제로 지갑파일이 존재하는지 확인할 수 있는 방법이 있을까요?                           ------------------------------------- 꼬리말 * 게... 2 427
나비잠
2019.05.08
1638 개발 자바/코틀린 호가,거래내역 조회 오픈소스 공유합니다. 아비트리지랑 마켓메이킹을 주로 하고있는 트레이더입니다.   phyton이나 go, javascript 진영의 경우에는 거래소 api sdk 오픈소스들이 많이 공개되어있는데 반해서 jvm 진영은 이러한 프로젝트들이 부족해서 오픈소... 1 1 561
reactive-crypto
2019.05.08
1637 질문 dash 하드 포크관련 안녕 하세요 dash 를 하드 포크 하려고 하는데요    혹시 이와 관련한 문서나 참고 할만한 사이트가 있을지요                      ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 *... 2 530
김승리
2019.05.03
1636 질문 이더리움 CA(컨트랙트 주소) 생성하고 관리하는 방법 안녕하세요? 금마입니다.    Remix를 이용하여 스마트컨트랙트 개발을 공부 중입니다.    이더리움 주소는 공개키에서 생성하는 것으로 알고 있는데 CA 생성은 어떤 원리로 이루어지는지 궁금합니다.   Remix와 같이 ... 2 543
금마
2019.04.30
1635 질문 비트맥스 시세는 원래 못 가져오나요?       https://www.bitmex.com/api/v1/instrument?symbol=XBTUSD&amp;columns=symbol%2ClastPrice%2Cvolume24h%2CprevPrice24h&amp;count=100&amp;reverse=false   감사하게도 방랑삿갓 님꼐서 비트맥스 시세를 받아... 3 788
마블치
2019.04.30
1634 질문 BITMEX 의 가격만 보이는 방법이 없을까요?                 $.get('https://api.korbit.co.kr/v1/ticker?currency_pair=btc_krw', function(data) {                     data = JSON.parse(data); //json데이터로 전달 안되어 변환                     var k... 1 598
마블치
2019.04.27
1633 질문 IBM X3550 M5 4SFF 1U 서버 새제품 5개월 정도 사용했는데 중고가격이 얼마인가요...     IBM X3550 M5 4SFF 1U 서버 새제품 5개월 정도 사용했는데 중고가격이 얼마인가요..??   CPU - E5-2620V3 (2.40G/ 15M/ 6코어/ 8.0GTS)   RAM - IBM 16GB 1Rx4, 2133Mhz DDR4-2400 R ECC   HDD - IBM 600GB 10K S... 1 612
심퉁이
2019.04.27
1632 질문 비트소닉이 바이낸스 api를 이용해 거래를 연동했다고 하는데 어떻게 한걸까요? 아무리 open API라도 바이낸스 계정이 있고   그 계정에 모든 비트소닉의 주문을 받은걸까요?   API로 어떻게 거래소끼리 연동시켜서 거래를 체결시키는지 궁금하네요.                       ----------------------... 683
아버
2019.04.25
1631 개발 PC에서 제한된 IP 대역대만 사용하는 프로그램 개발             안녕하세요~   프로그램 개발이 가능한지 여부를 좀 알고 싶습니다.   요즘 공공기관에서 사용하는 PC들은 망이중화를 해서 업무망 인터넷망을 분리해서 사용하고 있습니다.   그런데 업무망에서 사용하... 14 1163
jest77
2019.04.25
1630 개발 이미 스마트 컨트랙트 발행 상태에 Solidity 함수를 더 추가하고 싶은 경우 어떤 방법이 있는지요? 안녕하세요..    기본적인 토큰 발행의 Solidity  함수만을 구성하여 이미 컨트랙트 발행한 상태인데.. 추가적으로 함수를 추가하여 재 배포 하고 싶습니다. 이러한 경우 수정하는 방법이 있는지요? 토큰을 새로 만들... 1 558
jun98
2019.04.24
1629 질문 이더리움 기반 프라이빗 블록체인을 어찌 만드나요? 어떤 백서를 읽어보면 이더리움 기반의 프라이빗 블록체인이라고 명시되어 있는데,   이더리움은 퍼블릭블록체인이잖아요,...?   스마트 컨트랙트를 이용해서 개발하는건가요?   그런데 스마트 컨트랙트를 이용해도 ... 5 911
네탈
2019.04.22
1628 질문 대량의 데이터를 전송할 때 홀딩되지 않는 방법은 먼가요? in RabbitMQ 현재 파이썬 3.7을 사용중입니다.   mq 프로그램 중 RabbitMQ를 이용해 프로그램을 만들고 있습니다.   sendTX.py를 이용해 데이터 전송 테스트를 하고 있는데요.   한번에 60개 정도의 데이터를 보냈을 때는 특별히 ... 8 523
developerTH
2019.04.18
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 83 Next
/ 83