回答編集履歴
3
表現の修正
answer
CHANGED
@@ -22,16 +22,16 @@
|
|
22
22
|
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
|
23
23
|
|
24
24
|
```
|
25
|
-
というのは、jsonが正しくパースできていない、ということを意味します。
|
26
25
|
|
27
|
-
|
26
|
+
JSONDecodeErrorは、jsonのパースに失敗したことを意味します。
|
28
27
|
|
28
|
+
すなわち、requests.post()の戻り値 r が正しいjsonフォーマットではないということが推測されます。
|
29
|
+
|
29
30
|
そこで、requests.post()の戻り値を直接見るために
|
30
31
|
```
|
31
32
|
print(r.json()['header'])
|
32
33
|
```
|
33
34
|
を
|
34
|
-
|
35
35
|
```
|
36
36
|
print(r.text)
|
37
37
|
```
|
@@ -43,7 +43,7 @@
|
|
43
43
|
```
|
44
44
|
というような、htmlのエラーソースが出てくるはずです。
|
45
45
|
|
46
|
-
すなわち、r.json()の段階で、htmlを無理やりjsonデータとしてパースしようとしていたので、JsonDecodeErrorが発生し
|
46
|
+
すなわち、r.json()の段階で、htmlを無理やりjsonデータとしてパースしようとしていたので、JsonDecodeErrorが発生したということがわかります。
|
47
47
|
|
48
48
|
## 2
|
49
49
|
このHTMLは冒頭がstatus 400となっていますが、
|
2
表現の修正
answer
CHANGED
@@ -10,10 +10,7 @@
|
|
10
10
|
|
11
11
|
## 1
|
12
12
|
|
13
|
-
まず、エラーの内
|
13
|
+
まず、エラーの内容を確認しましょう。
|
14
|
-
|
15
|
-
エラーを把握するには、**スクリプトの手順を丁寧に分解**する必要があります。
|
16
|
-
|
17
14
|
スタックトレースをたどると
|
18
15
|
```
|
19
16
|
print(r.json()['header'])
|
@@ -60,13 +57,13 @@
|
|
60
57
|
しかし、上記のpythonスクリプトでは、jsonではなく、htmlでエラーが返ってきました。
|
61
58
|
htmlでエラーが返ってくるということは、**postのフォーマット自体が正しくない**、ということが推測されます。
|
62
59
|
|
63
|
-
ここで
|
60
|
+
ここでpost部分を見ると、
|
64
61
|
```
|
65
62
|
r = session.post(url,json=data)
|
66
63
|
```
|
67
64
|
となっています。
|
68
65
|
|
69
|
-
ここが誤りで、requests
|
66
|
+
ここが誤りで、requestsでjsonパラメータにデータを渡すときは、辞書ではなく、json文字列を渡さなければなりません。
|
70
67
|
|
71
68
|
すなわち、正しくは、
|
72
69
|
```
|
1
表現の修正
answer
CHANGED
@@ -51,13 +51,14 @@
|
|
51
51
|
## 2
|
52
52
|
このHTMLは冒頭がstatus 400となっていますが、
|
53
53
|
仮に正しいjsonでpostしていたならば、jsonフォーマットでエラーメッセージが返ってくるはず。
|
54
|
-
たとえばあなたも試されたかもしれません、Chromeで
|
54
|
+
たとえば(あなたも試されたかもしれませんが)、ChromeでDevelopers Toolsを開き、calculateボタンを押したときのpostをそのまま開くと
|
55
55
|
```
|
56
56
|
{"header":{"result":"error","systemError":{"errorCode":"DSS_U001","type":"E","severity":"Application","errorMessage":"Technical Error Occurred","validationErrors":[],"contentType":"application/json","channel":"6"}}}
|
57
57
|
```
|
58
58
|
というjsonフォーマットのエラーが返ってきます。
|
59
59
|
|
60
|
+
しかし、上記のpythonスクリプトでは、jsonではなく、htmlでエラーが返ってきました。
|
60
|
-
htmlでエラーが返ってくるということは、postのフォーマット自体が正しくない、ということが推測されます。
|
61
|
+
htmlでエラーが返ってくるということは、**postのフォーマット自体が正しくない**、ということが推測されます。
|
61
62
|
|
62
63
|
ここでrequestを見ると、
|
63
64
|
```
|
@@ -71,11 +72,12 @@
|
|
71
72
|
```
|
72
73
|
r = session.post(url, json=json.dumps(data))
|
73
74
|
```
|
74
|
-
ま
|
75
|
+
とします。
|
76
|
+
または、json文字列ではなく、直接辞書を渡したい場合は、
|
75
77
|
```
|
76
78
|
r = session.post(url, data=data)
|
77
79
|
```
|
78
|
-
というようにdataパラメータに
|
80
|
+
というようにdataパラメータに辞書を渡す必要があります。
|
79
81
|
|
80
82
|
|
81
83
|
## 3
|