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

質問編集履歴

5

Chatworkサポートデスクへの問い合わせ結果追記

2019/12/14 01:02

投稿

maequn
maequn

スコア6

title CHANGED
File without changes
body CHANGED
@@ -83,6 +83,7 @@
83
83
 
84
84
  ### 試したこと
85
85
  ファイルアップロードで使用したAPIトークンやRoomIDは以下のメッセージ送信処理では有効でしたので必要なパラメータは用意できていると判断しています。
86
+ Chatworkのサポートにアドバイスを求めるもAPIについてはサポート対象外とのこと...
86
87
 
87
88
 
88
89
 

4

レスポンスのログも追記しました

2019/12/14 01:02

投稿

maequn
maequn

スコア6

title CHANGED
File without changes
body CHANGED
@@ -107,4 +107,9 @@
107
107
  テスト
108
108
  --tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY--
109
109
  ]
110
+ ```
111
+
112
+ ### HTTPレスポンスのログ
113
+ ```
114
+ [API:Response(5c1b57c0-228e-4c05-a605-92e019721ac5)] Status=[400:Bad Request], Headers=[[Content-Type:"application/json", Content-Length:"64", Connection:"keep-alive", Date:"Wed, 11 Dec 2019 10:25:45 GMT", x-amzn-RequestId:"01c2efde-74d2-46c2-ab03-3f3478abf844", x-amzn-ErrorType:"AccessDeniedException", x-amz-apigw-id:"EiOWeEQiNjMFnkg=", X-Cache:"Error from cloudfront", Via:"1.1 c6a9836e54cf7bc2bb59e3fb86f871e1.cloudfront.net (CloudFront)", X-Amz-Cf-Pop:"NRT20-C1", X-Amz-Cf-Id:"LgV5C-NNYcwt52lodk8KhLRct-35xCyLYPqG71tNqIQpoSxWGkHtCw=="]], Body=[{"errors":["Please upload the file with `multipart/form-data`"]}]
110
115
  ```

3

RestTemplateのHTTPリクエストログを載せました

2019/12/11 10:45

投稿

maequn
maequn

スコア6

title CHANGED
File without changes
body CHANGED
@@ -13,18 +13,7 @@
13
13
  エンドポイントが要求している形でリクエストボディが作成できていないのか、ステータスコード400(Bad Request)でレスポンスされてしまいます。
14
14
  何が不足しているのかわからず、、、確認すべき点や修正すべき箇所があればご指摘いただきたいです。
15
15
 
16
- ```
17
- org.springframework.web.client.HttpClientErrorException$BadRequest: 400 Bad Request
18
- at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
19
- at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
20
- at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
21
- at
22
- .
23
- .
24
- .
25
16
 
26
- ```
27
-
28
17
  ### 該当のソースコード
29
18
 
30
19
  ```Kotlin
@@ -95,33 +84,8 @@
95
84
  ### 試したこと
96
85
  ファイルアップロードで使用したAPIトークンやRoomIDは以下のメッセージ送信処理では有効でしたので必要なパラメータは用意できていると判断しています。
97
86
 
98
- メッセージ送信API
99
- [http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages](http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages)
100
87
 
101
- ```Kotlin
102
- /**
103
- * メッセージ 投稿.
104
- */
105
- override fun post(message: String, roomID: ChatWorkRoomID, token: ChatWorkToken): Boolean {
106
- // エンドポイント
107
- val url = "https://api.chatwork.com/v2/rooms/${roomID}/messages"
108
88
 
109
- // HTTPリクエストヘッダ作成
110
- val headers = HttpHeaders()
111
- headers.contentType = MediaType.APPLICATION_FORM_URLENCODED
112
- headers.set("X-ChatWorkToken", token)
113
-
114
- // HTTPリクエストボディ作成
115
- val body: MultiValueMap<String, String> = LinkedMultiValueMap<String, String>()
116
- body.add("body", message)
117
-
118
- // リクエスト & レスポンス
119
- val request = HttpEntity(body, headers)
120
- val response = restTemplate.postForEntity(url, request, String::class.java)
121
- return response.statusCode.is2xxSuccessful
122
- }
123
- ```
124
-
125
89
  ### HTTPリクエストのログ
126
90
  ```
127
91
  [API:Request(5c1b57c0-228e-4c05-a605-92e019721ac5)] Request=[POST:https://api.chatwork.com/v2/rooms/00000000/files], Headers=[[Accept:"text/plain, application/json, application/*+json, */*", Content-Type:"multipart/form-data;charset=UTF-8;boundary=tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY", X-ChatWorkToken:"***********", Content-Length:"9287"]], Body=[--tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY
@@ -129,5 +93,18 @@
129
93
  Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
130
94
  Content-Length: 8861
131
95
 
132
- �k��q�:&zw����`Ⱥ%�e9v�7;�[f��nĠh]�����8x���X�V�� �u�2���b��ޒ��*���'�p�^ՉRI-kshG���#B��`2CH;asxd��7
96
+ �k��q�:&zw����`Ⱥ%�e9v�7;�[f��nĠh]�����8x���X�V�� �u�2���b��ޒ��*���'�p�^ՉRI-����Y�������*W˟��hصF-�ߤ[�~��PK! ��GI{docProps/core.xml
97
+ .
98
+ . 省略
99
+ .
133
- X#���F@Z�V�т#7�=;�E�ov�u�0��:���uZ�Ͳ�Ws7����gj�Q�`%�`��|����ll��
100
+ ��GI{docProps/core.xmlPK-!EOU#-docProps/app.xmlPK
101
+ �
102
+ --tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY
103
+ Content-Disposition: form-data; name="message"
104
+ Content-Type: text/plain;charset=UTF-8
105
+ Content-Length: 9
106
+
107
+ テスト
108
+ --tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY--
109
+ ]
110
+ ```

2

RestTemplateのHTTP通信ログを載せました

2019/12/11 10:44

投稿

maequn
maequn

スコア6

title CHANGED
File without changes
body CHANGED
@@ -18,17 +18,7 @@
18
18
  at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:79) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
19
19
  at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
20
20
  at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
21
- at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
22
- at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:778) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
23
- at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:736) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
24
- at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
25
- at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:445) ~[spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
26
- at com.***.***.domain.service.api.chatwork.impl.ChatworkServiceImpl.post(ChatworkServiceImpl.kt:90) ~[main/:na]
27
- at com.***.***.presentation.controller.DeliverySettingsController.test(DeliverySettingsController.kt:30) ~[main/:na]
28
- at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
29
- at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
30
- at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
31
- at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
21
+ at
32
22
  .
33
23
  .
34
24
  .
@@ -80,7 +70,6 @@
80
70
  // HTTPリクエストボディ作成
81
71
  val fileHeaders = HttpHeaders()
82
72
  fileHeaders.contentType = MediaType.parseMediaType(contentType)
83
- fileHeaders.contentDisposition = ContentDisposition.parse("form-data")
84
73
  val uploadFileData: Resource = object : ByteArrayResource(file.readBytes()) {
85
74
  override fun getFilename(): String {
86
75
  return file.name
@@ -93,6 +82,7 @@
93
82
  val fileEntity = HttpEntity(uploadFileData, fileHeaders)
94
83
  val body: MultiValueMap<String, Object> = LinkedMultiValueMap<String, Object>()
95
84
  body.add("file", fileEntity as Object)
85
+ body.add("message", "テスト" as Object)
96
86
 
97
87
  // リクエスト & レスポンス
98
88
  val request = HttpEntity(body, headers)
@@ -130,4 +120,14 @@
130
120
  val response = restTemplate.postForEntity(url, request, String::class.java)
131
121
  return response.statusCode.is2xxSuccessful
132
122
  }
133
- ```
123
+ ```
124
+
125
+ ### HTTPリクエストのログ
126
+ ```
127
+ [API:Request(5c1b57c0-228e-4c05-a605-92e019721ac5)] Request=[POST:https://api.chatwork.com/v2/rooms/00000000/files], Headers=[[Accept:"text/plain, application/json, application/*+json, */*", Content-Type:"multipart/form-data;charset=UTF-8;boundary=tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY", X-ChatWorkToken:"***********", Content-Length:"9287"]], Body=[--tQc3hQBjk3FyTcoV9i2q5WDRKyraUHhMY_1WPY
128
+ Content-Disposition: form-data; name="file"; filename="template.xlsx"
129
+ Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
130
+ Content-Length: 8861
131
+
132
+ �k��q�:&zw����`Ⱥ%�e9v�7;�[f��nĠh]�����8x���X�V�� �u�2���b��ޒ��*���'�p�^ՉRI-ks�hG���#B��`�2�C�H�;asxd��7�
133
+ �X�#���F@Z�V�т#7�=;�E�ov�u�0��:���uZ�Ͳ�Ws7����gj�Q�`%�`��|����ll��

1

2019/12/11 10:41

投稿

maequn
maequn

スコア6

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
3
  Kotlin+SpringBoot でサーバ内で生成したファイルを連携したチャットルームに投稿する機能を実装しています。
4
- 対象チャットツールはChatwork。
4
+ 対象チャットツールはChatworkです
5
5
  ChatWorkAPIを叩く際のHTTPクライアントはSpring RestTemplateを利用しています。
6
6
 
7
7
  実現したいことは以下のエンドポイントへのファイルアップロードです。