回答編集履歴
3
誤字の修正
answer
CHANGED
@@ -90,7 +90,7 @@
|
|
90
90
|
var hash = new HMACSHA512(new UTF8Encoding().GetBytes(API_SECRET)).ComputeHash(new UTF8Encoding().GetBytes(await content.ReadAsStringAsync()));
|
91
91
|
var sign = BitConverter.ToString(hash).ToLower().Replace("-", "");
|
92
92
|
|
93
|
-
//
|
93
|
+
// HttpClientのヘッダにセットする
|
94
94
|
httpClient.DefaultRequestHeaders.Add("key", API_KEY);
|
95
95
|
httpClient.DefaultRequestHeaders.Add("Sign", sign);
|
96
96
|
|
2
HttpClientを使った方法を追加
answer
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
WebClientを使った方法
|
1
2
|
```
|
2
3
|
// 参照に以下の2つを追加する。
|
3
4
|
// System.Security
|
@@ -51,10 +52,72 @@
|
|
51
52
|
}
|
52
53
|
}
|
53
54
|
}
|
55
|
+
```
|
54
56
|
|
57
|
+
HttpClientを使った方法
|
55
58
|
```
|
59
|
+
using Newtonsoft.Json;
|
60
|
+
using System;
|
61
|
+
using System.Collections.Generic;
|
62
|
+
using System.Net.Http;
|
63
|
+
using System.Security.Cryptography;
|
64
|
+
using System.Text;
|
65
|
+
using System.Threading.Tasks;
|
56
66
|
|
67
|
+
namespace zaif_test_httpclient
|
68
|
+
{
|
69
|
+
class Program
|
70
|
+
{
|
71
|
+
static readonly string API_TRADE_ENDPOINT = "https://api.zaif.jp/tapi";
|
72
|
+
static readonly string API_KEY = "***";
|
73
|
+
static readonly string API_SECRET = "***";
|
74
|
+
|
75
|
+
static async Task<object> MyTask()
|
76
|
+
{
|
77
|
+
var httpClient = new HttpClient();
|
78
|
+
|
79
|
+
// nonce用にunixtimeを用いる
|
80
|
+
var unixtime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
|
81
|
+
|
82
|
+
// POSTするデータ
|
83
|
+
var content = new FormUrlEncodedContent(new Dictionary<string, string>
|
84
|
+
{
|
85
|
+
{ "nonce", unixtime.ToString() },
|
86
|
+
{ "method", "get_info" }
|
87
|
+
});
|
88
|
+
|
89
|
+
// Sign を計算する
|
90
|
+
var hash = new HMACSHA512(new UTF8Encoding().GetBytes(API_SECRET)).ComputeHash(new UTF8Encoding().GetBytes(await content.ReadAsStringAsync()));
|
91
|
+
var sign = BitConverter.ToString(hash).ToLower().Replace("-", "");
|
92
|
+
|
93
|
+
// WebClientのヘッダにセットする
|
94
|
+
httpClient.DefaultRequestHeaders.Add("key", API_KEY);
|
95
|
+
httpClient.DefaultRequestHeaders.Add("Sign", sign);
|
96
|
+
|
97
|
+
// POST実行
|
98
|
+
var res = await httpClient.PostAsync(API_TRADE_ENDPOINT, content);
|
99
|
+
|
100
|
+
// 結果JSONのデシリアライズ
|
101
|
+
var json = JsonConvert.DeserializeObject(await res.Content.ReadAsStringAsync());
|
102
|
+
|
103
|
+
// 結果を返す
|
104
|
+
return json;
|
105
|
+
}
|
106
|
+
|
107
|
+
static void Main()
|
108
|
+
{
|
109
|
+
Task.Run(async () =>
|
110
|
+
{
|
111
|
+
var obj = await MyTask();
|
112
|
+
Console.WriteLine(obj);
|
113
|
+
}).Wait();
|
114
|
+
|
115
|
+
}
|
116
|
+
}
|
117
|
+
}
|
57
118
|
```
|
119
|
+
|
120
|
+
```
|
58
121
|
{
|
59
122
|
"success": 1,
|
60
123
|
"return": {
|
1
参照の情報を追加
answer
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
```
|
2
|
+
// 参照に以下の2つを追加する。
|
3
|
+
// System.Security
|
4
|
+
// System.Web
|
5
|
+
//
|
6
|
+
// NuGetから以下1つのパッケージをインストールする。
|
7
|
+
// Newtonsoft.Json
|
2
8
|
using Newtonsoft.Json;
|
3
9
|
using System;
|
4
10
|
using System.Net;
|