MTGox HTTP api v2를 호출하는 데 문제가 있습니다. 일반적으로 모든 요청을 처리하기 위해 sendrequest 함수를 작성했습니다. MONEY/INFO 또는 MONEY/ORDERS에 잘 작동하지만 MONEY/ORDER/QUOTE 또는 MONEY/ORDER/ADD를 시도 할 때 500 내부 서버 오류가 발생합니다.MTGOX API가있는 내부 서버
post_data에 nonce 외에 아무것도 포함되어 있지 않은 것처럼 보이는 것은 잘못되었습니다. 이 문제를 해결하려면 무엇을해야합니까?
있는 sendRequest 기능 :
private string sendRequest(string action, NameValueCollection query)
{
NameValueCollection nvc = new NameValueCollection();
nvc.Add("nonce", DateTime.Now.Ticks.ToString());
nvc.Add(query);
String post_data = "";
for (int i = 0; i < nvc.Count; i++)
{
post_data += "&";
post_data += nvc.Keys[i];
post_data += "=";
post_data += nvc[i];
}
post_data = post_data.Substring(1);
action = "BTCEUR/money/" + action;
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sBasePath + action);
action += "\0"+post_data;
req.Method = "POST";
HMACSHA512 hmac = new HMACSHA512(GetBytes(action));
hmac.Key = Convert.FromBase64String(secret);
String sign = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(action)), Base64FormattingOptions.None);
req.Headers.Add("Rest-Key", apikey);
req.Headers.Add("Rest-Sign", sign);
req.UserAgent = "Mozilla/4.0 (compatible; MtGoxTradeCLI)";
req.ContentType = "application/x-www-form-urlencoded";
StreamWriter reqStream = new StreamWriter(req.GetRequestStream());
reqStream.Write(post_data);
reqStream.Close();
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
StreamReader respStream = new StreamReader(resp.GetResponseStream());
String response = respStream.ReadToEnd();
respStream.Close();
return response;
}
답변 해 주셔서 감사합니다. 그러나 불행히도 그것은 나를 돕지 않습니다. nonce가 마지막으로오고 BTCEUR/money/... 및 money/...를 시도하여 매개 변수 순서를 변경하여 새로운 API 키를 만들었지 만 여전히 500 내부 서버 오류가 발생했습니다. 다른 API 호출은 언급 한 점을 제외하고 여전히 작동합니다. –