여기 poloniex.com
에 대해 NSURLRequest
을 형성하는 방법의 예입니다.
상상해 당신의 :
API Key
= @ "apiKey에"
Secret
= @ "비밀"
nonce
= @ "1"
간단한 것들로 시작 :
NSMutableURLRequest *theURLRequest = [NSMutableURLRequest new];
theURLRequest.URL = [NSURL URLWithString:@"https://poloniex.com/tradingApi"];
theURLRequest.HTTPMethod = @"POST";
NSString *theBodyString = @"command=returnBalances&nonce=1";
theURLRequest.HTTPBody = [theBodyString dataUsingEncoding:NSUTF8StringEncoding];
[theURLRequest setValue:@"apikey" forHTTPHeaderField:@"Key"];
그리고 지금 가장 어려운 비트 ...
나에 관해서는, Poloniex 문서는 "Sign"
헤더 필드 값 아래에서 원하는 것을 분명히하지 않았지만 기본적으로 문자열을 전달해야합니다. HMAC SHA512
암호화 알고리즘의 결과는 theBodyString
및Secret
(이 예에서는 간단히 "비밀"임) 모두에 적용됩니다.
#import <CommonCrypto/CommonHMAC.h>
NSData * getHMACSHA512FromSecretKeyStringAndBodyString(NSString *theSecretKeyString, NSString *theBodyString)
{
const char *cSecret = [theSecretKeyString cStringUsingEncoding:NSUTF8StringEncoding];
const char *cBody = [theBodyString cStringUsingEncoding:NSUTF8StringEncoding];
unsigned char cHMAC[CC_SHA512_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA512, cSecret, strlen(cSecret), cBody, strlen(cBody), cHMAC);
return [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];
}
그래서, 실행 :
NSData *theData = getHMACSHA512FromSecretKeyStringAndBodyString(@"secret", @"command=returnBalances&nonce=1");
NSString *theString = [NSString stringWithFormat:@"%@", theData];
우리 우리가 원하는 것을 거의 줄 것인가 여기에
당신에게
HMAC SHA512
NSData
을 반환하는 기능입니다.
우리가 실제로 (
http://www.freeformatter.com/hmac-generator.html에 따라) 원하는 상태입니다
<c288f881 a6808d0e 78827ec6 ca9d6b9c 34ec1667 07716303 0d6d7abb 2b225456 31176f52 8347ab0f d6671ec5 3aec1f7d 3b6de8b8 e3ccc23d e62fd594 52d70db5>
:
c288f881a6808d0e78827ec6ca9d6b9c34ec1667077163030d6d7abb2b22545631176f528347ab0fd6671ec53aec1f7d3b6de8b8e3ccc23de62fd59452d70db5
그래서, 기본적으로, 단지에서 <
, >
및
문자를 제거
우리의 결과는 동일 너의 끈;
theString = [theString stringByReplacingOccurrencesOfString:@"<" withString:@""];
theString = [theString stringByReplacingOccurrencesOfString:@">" withString:@""];
theString = [theString stringByReplacingOccurrencesOfString:@" " withString:@""];
[theURLRequest setValue:theString forHTTPHeaderField:@"Sign"];
귀하의 theURLRequest
지금 준비하고 tradingApi
poloniex.com
의를 받고 성공해야한다.
정말로 '[ "오류 : 잘못된 명령입니다.]'라는 정확한 인쇄 줄이 있습니까? – pedrouan
@pedrouan 예. 이 주제를 쓸 때 "인쇄"명령을 제거했습니다. 그러나 이미 그것을 편집하십시오. – VladyslavPG
음. 응답이 올바르게 나타나기 때문에 오류는 API와 관련이 없습니다. 'print (dataBack.response)'줄 바로 다음에이 줄을 추가하십시오 :'print (dataBack)' – pedrouan