質問するログイン新規登録

質問編集履歴

1

見直し修正しました

2019/01/31 00:55

投稿

akiras
akiras

スコア8

title CHANGED
File without changes
body CHANGED
@@ -18,21 +18,38 @@
18
18
  Inherits System.Web.UI.Page
19
19
 
20
20
  '--------------------------------------------------------------------
21
- ' report簡易コントローラー(リクエストJSONをそのまま返す)
21
+ ' report簡易コントローラー(構造型のリクエストJSONをそのまま返す)
22
22
  '--------------------------------------------------------------------
23
- <OperationContract(), WebInvoke()>
23
+ <OperationContract(), WebInvoke()>
24
- Public Function report(req As List(Of DataList)) As List(Of DataList)
24
+ Public Function report(req As List(Of RequestJson3)) As List(Of RequestJson3)
25
+
25
26
  Dim RequestHeaders = WebOperationContext.Current.IncomingRequest.Headers ' リクエストヘッダー
26
-
27
27
  Return req
28
28
  End Function
29
29
  End Class
30
30
 
31
31
  ##【JSON定義側】
32
32
  '--------------------------------------------------------------------
33
+ ' リクエスト・メインクラス(JSON List)
34
+ '--------------------------------------------------------------------
35
+ Public Class RequestJson3
36
+ Property headerlist3 As New List(Of HeaderList3) '--- 配列データ 
37
+ Property reqdat3 As New List(Of DataList3) '--- 配列データ 
38
+ End Class
39
+
40
+ '--------------------------------------------------------------------
41
+ ' リクエスト・ヘッダークラス(List)
42
+ '--------------------------------------------------------------------
43
+ Public Class HeaderList3
44
+ Property recordNo As String = "" '--- レコード番号
45
+ Property appVer As String = "" '--- 識別情報
46
+ Property houkokuTime As String = "" '--- データ作成日時
47
+ End Class
48
+
49
+ '--------------------------------------------------------------------
33
50
  ' リクエスト・データクラス(List)
34
51
  '--------------------------------------------------------------------
35
- Public Class DataList
52
+ Public Class DataList3
36
53
  Property recordNo As String = "" '--- レコード番号
37
54
  Property okozukai As String = "" '--- お小遣い
38
55
  Property actiondate As String = "" '--- 使った日
@@ -42,36 +59,47 @@
42
59
 
43
60
 
44
61
  ##【ソース・リクエスト側】
45
-    Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
62
+ Private Function RequestToPMS3(ByRef json As RequestJson3) As String
46
63
 
47
-     'POST送信する文字作成
64
+ '文字コード指定する
48
-     Dim postData As String
65
+ Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("UTF-8")
49
66
 
67
+ 'POST送信する文字列を作成
68
+ Dim postData As String
50
-     postData = System.Web.HttpUtility.UrlEncode(json.reqdat.ToArray.ToString, enc)
69
+ postData = System.Web.HttpUtility.UrlEncode(json.ToString, enc)  `※ JSONではなく、"xxx.RequestJson3"の文字になっている`
51
-      `  ※json.reqdatは、DataList型です`
52
70
 
71
+ 'バイト型配列に変換
72
+ Dim postDataBytes As Byte() = enc.GetBytes(postData)
53
73
 
54
-     'バイト型配列に変換
55
-     Dim postDataBytes As Byte() = enc.GetBytes(postData)
56
-     Dim wc As New System.Net.WebClient
74
+ Dim wc As New System.Net.WebClient
57
-     '---  ヘッダ ---
58
-     wc.Headers.Add("Content-Type", "application/json; charset=utf-8")
59
75
 
76
+ '--- ヘッダ ---
60
-     Dim eMsg As String = ""
77
+ ' Content-Type
78
+ wc.Headers.Add("Content-Type", "application/json; charset=utf-8")
61
79
 
62
-     '***** データを送信し、結果を受信する *****
63
-     reqCount = reqCount + 1
80
+ ' 連携リクエストID
64
-     Dim resData As Byte()
65
-     resData = wc.UploadData(pmsRequestUrl, postDataBytes)    `※ここで400のエラーになります`
81
+ wc.Headers.Add("X-Request-Id", getRequestId())
66
82
 
67
-     wc.Dispose()
83
+ Dim eMsg As String = ""
84
+ Try
68
85
 
69
-     '信し結果(JSONデータ)表示する
86
+ '***** データを送信し結果を受信する *****
70
-     Dim resText As String = enc.GetString(resData)
87
+ reqCount = reqCount + 1
71
-     Console.WriteLine(resText)
88
+ Dim resData As Byte()
89
+ resData = wc.UploadData(pmsRequestUrl, postDataBytes)    `※ここで400のエラーになります`
72
90
 
91
+ wc.Dispose()
73
92
 
93
+ '受信した結果(JSONデータ)を表示する
94
+ Dim resText As String = enc.GetString(resData)
95
+ Console.WriteLine(resText)
74
96
 
97
+      ~
98
+      ~
99
+      ~
100
+      ~
101
+ End Function
102
+
75
103
  ##【問い合わせ内容】
76
104
  いろいろサンプル試したのですが、ことごとくエラーになります
77
105
  0. どこがいけないのかご教授願います
@@ -79,5 +107,6 @@
79
107
  0. JSONですが、汎用的にどんな形や項目がきても受取れるプログラミングはできないのでしょうか?
80
108
    どれも事前にJSONの項目をクラス定義しとかないといけないサンプルばかりでしたので不便かなと。。。
81
109
 
110
+ 0. postData = System.Web.HttpUtility.UrlEncode(json.ToString, enc)の結果がJSONではなく、"xxx.RequestJson3"の文字になってしまう(これがまずNG)
82
111
 
83
112
  以上、よろしくお願いいたします。