我正在使用BitStamp进行比特币交易,我正在尝试使用API来检查我的余额。
当我使用Postman使用form-data或x-www-form-urlencoded测试API而不进行身份验证时,两者都可以正常工作。即使只是通过浏览器发布它也可以完美运行:
<html>
<head><title>Test</title></head>
<body>
<form action="https://www.bitstamp.net/api/v2/balance/btcusd/" method="post">
<input type="text" name="key" value="SomeKey" />
<input type="text" name="signature" value="SomeSignature" />
<input type="text" name="nonce" value="123456789" />
<input type="submit" value="Test" />
</form>
</body>
</html>
但是使用HttpWebRequest执行此操作时,我不断收到异常403 Forbidden错误
try
{
HttpWebRequest getApiRequest = (HttpWebRequest)HttpWebRequest.Create("https://www.bitstamp.net/api/v2/balance/btcusd/");
getApiRequest.Method = "POST";
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
getApiRequest.ContentType = "application/x-www-form-urlencoded;";
string FormData = "key=SomeKey&signature=SomeSignature&nonce=123456789"
StreamWriter formWrite = new StreamWriter(getApiRequest.GetRequestStream());
formWrite.Write(FormData);
formWrite.Flush();
formWrite.Close();
StreamReader resultReader = new StreamReader(getApiRequest.GetResponse().GetResponseStream());
string result = resultReader.ReadToEnd();
resultReader.Close();
return result;
}
catch (Exception e)
{
return e.Message;
}
我看过Fiddler的帖子,但在大多数情况下看起来都是一样的。但诚然,我不确定我是否正确使用Fiddler。我尝试过Content-Type“multipart / form-data;”使用正确的边框和所有内容写入FormData,没有运气。我试过设置用户代理,但仍然没有运气。我错过了什么?
答案 0 :(得分:0)
我发现即使抛出异常,如果它是Web异常,我仍然可以得到响应。
catch (WebException we)
{
StreamReader resultReader = new StreamReader(we.Response.GetResponseStream());
string result = resultReader.ReadToEnd();
resultReader.Close();
return result;
}
catch (Exception e)
{
return e.Message;
}
从响应中我看到我使用的nonce是我之前使用过的,因此错误。