gpt4 book ai didi

Swift 3,在 Poloniex 交易 Api 中获取 - "error": Invalid command

转载 作者:行者123 更新时间:2023-11-28 12:41:32 25 4
gpt4 key购买 nike

我的代码:

func testApi() {
Alamofire.request("https://www.poloniex.com/tradingApi", withMethod: .post, parameters: ["command":"returnDepositAddresses","nonce":nonce()], encoding: .json, headers: ["Key":apiKey,"Sign":newSecret]).responseJSON() { (dataBack) in
print(dataBack)
}
}
func nonce() -> Int {
let date = "\(NSDate().timeIntervalSince1970)"
let UnixInt = Double(date)!
return Int(UnixInt)
}

我明白了:

SUCCESS: {
error = "Invalid command.";}

我找不到任何关于使用 Swift 或 Objective C 的 poloniex api 的信息...因此,如果有人可以提供帮助 - 我将非常感激

最佳答案

这是一个如何为 NSURLRequest 形成 poloniex.com 的例子。

假设您:

  1. API Key = @"apikey"
  2. Secret = @" secret "
  3. 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" header 字段值下想要什么,但基本上他们希望您传递一个字符串,这应该是将 HMAC SHA512 加密算法应用于 theBodyString Secret(在我们的示例中只是@"secret")。

这是返回 HMAC SHA512 NSData 的函数:

#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];

会给我们几乎我们想要的。

我们的结果等于:

<c288f881 a6808d0e 78827ec6 ca9d6b9c 34ec1667 07716303 0d6d7abb 2b225456 31176f52 8347ab0f d6671ec5 3aec1f7d 3b6de8b8 e3ccc23d e62fd594 52d70db5>

虽然我们真正想要的(根据 http://www.freeformatter.com/hmac-generator.html )是:

c288f881a6808d0e78827ec6ca9d6b9c34ec1667077163030d6d7abb2b22545631176f528347ab0fd6671ec53aec1f7d3b6de8b8e3ccc23de62fd59452d70db5

所以,基本上,只需从字符串中删除 <> 符号;

theString = [theString stringByReplacingOccurrencesOfString:@"<" withString:@""];
theString = [theString stringByReplacingOccurrencesOfString:@">" withString:@""];
theString = [theString stringByReplacingOccurrencesOfString:@" " withString:@""];
[theURLRequest setValue:theString forHTTPHeaderField:@"Sign"];

您的 theURLRequest 现已准备就绪,应该会成功获取 tradingApipoloniex.com

关于Swift 3,在 Poloniex 交易 Api 中获取 - "error": Invalid command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com