質問編集履歴

2

ソースコードの記述を修正

2020/06/10 00:19

投稿

masarai
masarai

スコア0

test CHANGED
File without changes
test CHANGED
@@ -56,280 +56,280 @@
56
56
 
57
57
  ```ここに言語を入力
58
58
 
59
+ UINT PostGetSerialCode(void)
60
+
61
+ {
62
+
63
+ UINT uiRet;
64
+
65
+ int ret_code;
66
+
67
+ string strCommandStr;
68
+
69
+ string strParamStr;
70
+
71
+ string strRtnStat;
72
+
73
+
74
+
75
+ uiRet = 999;
76
+
77
+
78
+
79
+ if (IsConnected() == false) {
80
+
81
+ uiRet = HttpConnect();
82
+
83
+ }
84
+
85
+ if (IsConnected() == true) {
86
+
87
+ strCommandStr = "/v1/Raw/GetRegister";
88
+
89
+ strParamStr = "\"Address\";28677,\"Index\";0";
90
+
91
+ uiRet = HttpExecutePost_GetRegister(strCommandStr, strParamStr, strRtnStat);
92
+
93
+ if (uiRet != 0) {
94
+
95
+ //Error処理
96
+
97
+ }
98
+
99
+ return(uiRet);
100
+
101
+ }
102
+
103
+
104
+
105
+ UINT HttpExecutePost_GetRegister(string strCommand, string strParameter, string& rstrResult)
106
+
107
+ {
108
+
109
+ CIniFile *IniPara = CIniFile::GetInstance();
110
+
111
+
112
+
113
+ string strVerb;
114
+
115
+ string strObject;
116
+
117
+ string strHeaders;
118
+
119
+ char* pszOptional = NULL;
120
+
121
+ tstringstream ssRead;
122
+
123
+ DWORD dwErr;
124
+
125
+
126
+
127
+ DWORD dwFlags = 0;
128
+
129
+ dwFlags = INTERNET_FLAG_RELOAD // 要求されたファイル、オブジェクト、またはフォルダ一覧を、キャッシュからではなく、元のサーバーから強制的にダウンロードします。
130
+
131
+ | INTERNET_FLAG_DONT_CACHE // 返されたエンティティをキャシュへ追加しません。
132
+
133
+ | INTERNET_FLAG_NO_AUTO_REDIRECT; // HTTP だけで使用され、リダイレクトが HttpSendRequest で処理されないことを指定します。
134
+
135
+
136
+
137
+ strVerb = "POST";
138
+
139
+ strHeaders = "Content-Type: application/json";
140
+
141
+ strObject = strCommand;
142
+
143
+
144
+
145
+ if (0 != strParameter.length()) {
146
+
147
+ // パラメータを、送信するオプションデータに変換する
148
+
149
+ pszOptional = NhT2M(strParameter.c_str()); // char文字列に変換
150
+
151
+ }
152
+
153
+
154
+
155
+ // HTTP接続を開く
156
+
157
+ m_ReqHndl = HttpOpenRequest(m_CnctHndl,
158
+
159
+ strVerb.c_str(),
160
+
161
+ strObject.c_str(),
162
+
163
+ NULL,
164
+
165
+ NULL,
166
+
167
+ NULL,
168
+
169
+ dwFlags,
170
+
171
+ NULL);
172
+
173
+ if (NULL == m_ReqHndl)
174
+
175
+ {
176
+
177
+ //Open Error
178
+
179
+ HttpClose();
180
+
181
+ return 102;
182
+
183
+ }
184
+
185
+
186
+
187
+ // HTTP要求送信
188
+
189
+ if (!HttpSendRequest(m_ReqHndl,
190
+
191
+ strHeaders.c_str(),
192
+
193
+ (DWORD)strHeaders.length(),
194
+
195
+ (LPVOID)((char*)pszOptional),
196
+
197
+ pszOptional ? (DWORD)(strlen(pszOptional) * sizeof(char)) : 0))
198
+
199
+ {
200
+
201
+ //Send Error
202
+
203
+ //Http通信クローズ
204
+
205
+ HttpClose();
206
+
207
+ return 103;
208
+
209
+ }
210
+
211
+
212
+
213
+ // HTTP要求に対応するステータスコードの取得
214
+
215
+ DWORD dwStatusCode;
216
+
217
+ DWORD dwLength = sizeof(DWORD);
218
+
219
+ if (!HttpQueryInfo(m_ReqHndl,
220
+
221
+ HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
222
+
223
+ &dwStatusCode,
224
+
225
+ &dwLength,
226
+
59
- コード
227
+ 0))
228
+
229
+ {
230
+
231
+ //Query Info Error
232
+
233
+ //Http通信クローズ
234
+
235
+ HttpClose();
236
+
237
+ return 104;
238
+
239
+ }
240
+
241
+
242
+
243
+ if (HTTP_STATUS_OK != dwStatusCode)
244
+
245
+ {
246
+
247
+ // Error処理
248
+
249
+ HttpClose();
250
+
251
+ return 105;
252
+
253
+ }
254
+
255
+
256
+
257
+ // HTTPファイル読み込み
258
+
259
+ char szReadBuffer[READBUFFER_SIZE + 1];
260
+
261
+
262
+
263
+ while (1) {
264
+
265
+ DWORD dwRead = 0;
266
+
267
+ if (!InternetReadFile(m_ReqHndl, szReadBuffer, READBUFFER_SIZE, &dwRead)) {
268
+
269
+ //File Read Error
270
+
271
+ //Http通信クローズ
272
+
273
+ // 2018.04.14 <Arai>
274
+
275
+ HttpClose();
276
+
277
+ return 106;
278
+
279
+ }
280
+
281
+ if (0 == dwRead) {
282
+
283
+ break;
284
+
285
+ }
286
+
287
+ szReadBuffer[dwRead] = '\0'; // 終端文字「\0」の付加
288
+
289
+ size_t length = dwRead + 1;
290
+
291
+ LPWSTR pszWideChar = (LPWSTR)malloc(length * sizeof(WCHAR));
292
+
293
+ MultiByteToWideChar(CP_UTF8, // CODE PAGE: UTF-8
294
+
295
+ 0,
296
+
297
+ szReadBuffer,
298
+
299
+ -1,
300
+
301
+ pszWideChar,
302
+
303
+ (int)length); // UTF-8文字列をANSI文字列に変換
304
+
305
+ TCHAR* pszTchar = NhW2T(pszWideChar); // WideChar文字列をTCHAR文字列に変換
306
+
307
+ ssRead << pszTchar; // ストリーム文字列に流し込む
308
+
309
+ free(pszTchar);
310
+
311
+ free(pszWideChar);
312
+
313
+ }
314
+
315
+
316
+
317
+ // ストリーム文字列を出力文字列に変換
318
+
319
+ rstrResult = ssRead.str().c_str();
320
+
321
+
322
+
323
+ InternetCloseHandle(m_ReqHndl);
324
+
325
+ return 0;
326
+
327
+ }
328
+
329
+
60
330
 
61
331
  ```
62
332
 
63
- UINT PostGetSerialCode(void)
64
-
65
- {
66
-
67
- UINT uiRet;
68
-
69
- int ret_code;
70
-
71
- string strCommandStr;
72
-
73
- string strParamStr;
74
-
75
- string strRtnStat;
76
-
77
-
78
-
79
- uiRet = 999;
80
-
81
-
82
-
83
- if (IsConnected() == false) {
84
-
85
- uiRet = HttpConnect();
86
-
87
- }
88
-
89
- if (IsConnected() == true) {
90
-
91
- strCommandStr = "/v1/Raw/GetRegister";
92
-
93
- strParamStr = "\"Address\";28677,\"Index\";0";
94
-
95
- uiRet = HttpExecutePost_GetRegister(strCommandStr, strParamStr, strRtnStat);
96
-
97
- if (uiRet != 0) {
98
-
99
- //Error処理
100
-
101
- }
102
-
103
- return(uiRet);
104
-
105
- }
106
-
107
-
108
-
109
- UINT HttpExecutePost_GetRegister(string strCommand, string strParameter, string& rstrResult)
110
-
111
- {
112
-
113
- CIniFile *IniPara = CIniFile::GetInstance();
114
-
115
-
116
-
117
- string strVerb;
118
-
119
- string strObject;
120
-
121
- string strHeaders;
122
-
123
- char* pszOptional = NULL;
124
-
125
- tstringstream ssRead;
126
-
127
- DWORD dwErr;
128
-
129
-
130
-
131
- DWORD dwFlags = 0;
132
-
133
- dwFlags = INTERNET_FLAG_RELOAD // 要求されたファイル、オブジェクト、またはフォルダ一覧を、キャッシュからではなく、元のサーバーから強制的にダウンロードします。
134
-
135
- | INTERNET_FLAG_DONT_CACHE // 返されたエンティティをキャシュへ追加しません。
136
-
137
- | INTERNET_FLAG_NO_AUTO_REDIRECT; // HTTP だけで使用され、リダイレクトが HttpSendRequest で処理されないことを指定します。
138
-
139
-
140
-
141
- strVerb = "POST";
142
-
143
- strHeaders = "Content-Type: application/json";
144
-
145
- strObject = strCommand;
146
-
147
-
148
-
149
- if (0 != strParameter.length()) {
150
-
151
- // パラメータを、送信するオプションデータに変換する
152
-
153
- pszOptional = NhT2M(strParameter.c_str()); // char文字列に変換
154
-
155
- }
156
-
157
-
158
-
159
- // HTTP接続を開く
160
-
161
- m_ReqHndl = HttpOpenRequest(m_CnctHndl,
162
-
163
- strVerb.c_str(),
164
-
165
- strObject.c_str(),
166
-
167
- NULL,
168
-
169
- NULL,
170
-
171
- NULL,
172
-
173
- dwFlags,
174
-
175
- NULL);
176
-
177
- if (NULL == m_ReqHndl)
178
-
179
- {
180
-
181
- //Open Error
182
-
183
- HttpClose();
184
-
185
- return 102;
186
-
187
- }
188
-
189
-
190
-
191
- // HTTP要求送信
192
-
193
- if (!HttpSendRequest(m_ReqHndl,
194
-
195
- strHeaders.c_str(),
196
-
197
- (DWORD)strHeaders.length(),
198
-
199
- (LPVOID)((char*)pszOptional),
200
-
201
- pszOptional ? (DWORD)(strlen(pszOptional) * sizeof(char)) : 0))
202
-
203
- {
204
-
205
- //Send Error
206
-
207
- //Http通信クローズ
208
-
209
- HttpClose();
210
-
211
- return 103;
212
-
213
- }
214
-
215
-
216
-
217
- // HTTP要求に対応するステータスコードの取得
218
-
219
- DWORD dwStatusCode;
220
-
221
- DWORD dwLength = sizeof(DWORD);
222
-
223
- if (!HttpQueryInfo(m_ReqHndl,
224
-
225
- HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,
226
-
227
- &dwStatusCode,
228
-
229
- &dwLength,
230
-
231
- 0))
232
-
233
- {
234
-
235
- //Query Info Error
236
-
237
- //Http通信クローズ
238
-
239
- HttpClose();
240
-
241
- return 104;
242
-
243
- }
244
-
245
-
246
-
247
- if (HTTP_STATUS_OK != dwStatusCode)
248
-
249
- {
250
-
251
- // Error処理
252
-
253
- HttpClose();
254
-
255
- return 105;
256
-
257
- }
258
-
259
-
260
-
261
- // HTTPファイル読み込み
262
-
263
- char szReadBuffer[READBUFFER_SIZE + 1];
264
-
265
-
266
-
267
- while (1) {
268
-
269
- DWORD dwRead = 0;
270
-
271
- if (!InternetReadFile(m_ReqHndl, szReadBuffer, READBUFFER_SIZE, &dwRead)) {
272
-
273
- //File Read Error
274
-
275
- //Http通信クローズ
276
-
277
- // 2018.04.14 <Arai>
278
-
279
- HttpClose();
280
-
281
- return 106;
282
-
283
- }
284
-
285
- if (0 == dwRead) {
286
-
287
- break;
288
-
289
- }
290
-
291
- szReadBuffer[dwRead] = '\0'; // 終端文字「\0」の付加
292
-
293
- size_t length = dwRead + 1;
294
-
295
- LPWSTR pszWideChar = (LPWSTR)malloc(length * sizeof(WCHAR));
296
-
297
- MultiByteToWideChar(CP_UTF8, // CODE PAGE: UTF-8
298
-
299
- 0,
300
-
301
- szReadBuffer,
302
-
303
- -1,
304
-
305
- pszWideChar,
306
-
307
- (int)length); // UTF-8文字列をANSI文字列に変換
308
-
309
- TCHAR* pszTchar = NhW2T(pszWideChar); // WideChar文字列をTCHAR文字列に変換
310
-
311
- ssRead << pszTchar; // ストリーム文字列に流し込む
312
-
313
- free(pszTchar);
314
-
315
- free(pszWideChar);
316
-
317
- }
318
-
319
-
320
-
321
- // ストリーム文字列を出力文字列に変換
322
-
323
- rstrResult = ssRead.str().c_str();
324
-
325
-
326
-
327
- InternetCloseHandle(m_ReqHndl);
328
-
329
- return 0;
330
-
331
- }
332
-
333
333
 
334
334
 
335
335
 

1

ソースコードの記述修正

2020/06/10 00:19

投稿

masarai
masarai

スコア0

test CHANGED
File without changes
test CHANGED
@@ -54,6 +54,12 @@
54
54
 
55
55
 
56
56
 
57
+ ```ここに言語を入力
58
+
59
+ コード
60
+
61
+ ```
62
+
57
63
  UINT PostGetSerialCode(void)
58
64
 
59
65
  {
@@ -326,6 +332,8 @@
326
332
 
327
333
 
328
334
 
335
+
336
+
329
337
  ※コードの見やすさの為、エラー処理等は簡略化し、抜粋しました。
330
338
 
331
339