【发布时间】:2018-04-14 03:32:12
【问题描述】:
这是我的网络请求代码块,
向下滚动到它的底部以捕获异常
try
{
var webRequest = System.Net.WebRequest.Create (WEBSERVICE_URL);
if (webRequest != null) {
webRequest.Method = "POST";
//webRequest.Timeout = 12000;
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Headers.Add ("Key", _apiKey);
webRequest.Headers.Add ("Sign", genHMAC ());
byte[] dataStream = Encoding.UTF8.GetBytes("command=returnBalances&nonce=" + nonce);
webRequest.ContentLength = dataStream.Length;
Stream newStream = webRequest.GetRequestStream();
newStream.Write(dataStream, 0, dataStream.Length);
newStream.Close();
using (System.IO.Stream s = webRequest.GetResponse ().GetResponseStream ()) {
using (System.IO.StreamReader sr = new System.IO.StreamReader (s)) {
var jsonResponse = sr.ReadToEnd ();
OutputText.text = jsonResponse.ToString ();
}
}
}
}
catch (Exception ex)
{
OutputText.text = ex.ToString ();
}
这给了我一个“错误(403)禁止”和异常堆栈跟踪,但我正在尝试获取 403 响应正文:
我无法让 Unity C# 接受以下代码:提到 here
catch(WebException ex)
{
var response = (HttpWebResponse)ex.Response;
}
我需要什么才能使这个方法起作用?我需要响应正文
【问题讨论】:
-
这意味着您无权访问该资源。您必须测试您的凭据,通过使用邮递员来验证和缩小真正的问题。
-
“无法让 Unity C# 接受”你的意思是你得到一个编译错误?具体是什么?
-
WebException 显示为红色,并且我当前的异常(ex)没有为类型 Exception 提供 ex.Response,我想我错过了一个库,可能在你输入“使用等”的地方。 .." 在所有脚本的顶部
-
您生成 Sign 的方式似乎是错误的。要为 Poloniex 生成有效符号,所有 POST 数据(您的
dataStream变量)必须用作 HMAC 的输入。在您有要签名的数据之前,您无法生成签名。 -
这里是在我的 genHMAC() 函数中签名的: private string genHMAC() { byte [] APISecret_Bytes = System.Text.Encoding.UTF8.GetBytes(_apiSecret); var hmac = new HMACSHA512(APISecret_Bytes);返回 hmac.ToString(); }
标签: c# response system.net.webexception poloniex webexception