質問編集履歴

6

ネストを調節

2020/08/20 05:07

投稿

kait0520
kait0520

スコア1

test CHANGED
File without changes
test CHANGED
@@ -286,7 +286,7 @@
286
286
 
287
287
  String b = connection.getResponseMessage();
288
288
 
289
-                   InputStream c = connection.getInputStream();
289
+ InputStream c = connection.getInputStream();
290
290
 
291
291
 
292
292
 

5

Content-Lengthの内容を記載

2020/08/20 05:07

投稿

kait0520
kait0520

スコア1

test CHANGED
File without changes
test CHANGED
@@ -240,12 +240,32 @@
240
240
 
241
241
 
242
242
 
243
+ //Content-Lengthの手動記載
244
+
245
+ byte[] bytes = request.getBytes();
246
+
247
+ connection.setInstanceFollowRedirects(false);
248
+
249
+ String texta = String.valueOf(bytes.length);
250
+
251
+ connection.setFixedLengthStreamingMode(bytes.length);
252
+
253
+ connection.setFixedLengthStreamingMode((long)bytes.length);
254
+
255
+
256
+
243
257
  connection.setRequestProperty("Host", "test.circus.shopping.yahooapis.jp");
244
258
 
245
259
  connection.setRequestProperty("Authorization", "Bearer " + <アクセストークン>);
246
260
 
247
261
 
248
262
 
263
+ //Content-Typeの設定
264
+
265
+ connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
266
+
267
+
268
+
249
269
  connection.connect();
250
270
 
251
271
 
@@ -420,7 +440,7 @@
420
440
 
421
441
  ④ connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");の加筆
422
442
 
423
- ⑤ connection.setInstanceFollowRedirects(false) を使用したContent-Lenghtの手動調整
443
+ ⑤ connection.setInstanceFollowRedirects(false) を使用したContent-Lenghtの手動調整 SCに記載を追加。
424
444
 
425
445
  ⑥ requestStringの内容の修正
426
446
 

4

足りない情報の加筆をしました。

2020/08/20 01:16

投稿

kait0520
kait0520

スコア1

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
-
17
+ InputStream c = connection.getInputStream()で発生したエラーコード。
18
18
 
19
19
  ```error
20
20
 

3

レスポンスコード確認部分にInputStream確認を追加しました。

2020/08/20 00:58

投稿

kait0520
kait0520

スコア1

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,106 @@
14
14
 
15
15
 
16
16
 
17
+
18
+
19
+ ```error
20
+
21
+ java.io.IOException: Server returned HTTP response code: 400 for URL: https://test.circus.shopping.yahooapis.jp/ShoppingWebService/V1/editItem
22
+
23
+ at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
24
+
25
+ at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
26
+
27
+ at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
28
+
29
+ at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
30
+
31
+ at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1969)
32
+
33
+ at java.base/sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1964)
34
+
35
+ at java.base/java.security.AccessController.doPrivileged(Native Method)
36
+
37
+ at java.base/sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1963)
38
+
39
+ at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1531)
40
+
41
+ at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
42
+
43
+ at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)
44
+
45
+ at servlet.api.EditItem.executePost(EditItem.java:96)
46
+
47
+ at servlet.api.EditItem.editItem(Unknown Source)
48
+
49
+ at servlet.ProductEntry.doPost(ProductEntry.java:115)
50
+
51
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
52
+
53
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
54
+
55
+ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
56
+
57
+ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
58
+
59
+ at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
60
+
61
+ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
62
+
63
+ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
64
+
65
+ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
66
+
67
+ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
68
+
69
+ at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
70
+
71
+ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
72
+
73
+ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
74
+
75
+ at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678)
76
+
77
+ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
78
+
79
+ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
80
+
81
+ at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
82
+
83
+ at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
84
+
85
+ at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:860)
86
+
87
+ at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1598)
88
+
89
+ at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
90
+
91
+ at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
92
+
93
+ at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
94
+
95
+ at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
96
+
97
+ at java.base/java.lang.Thread.run(Thread.java:834)
98
+
99
+ Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: https://test.circus.shopping.yahooapis.jp/ShoppingWebService/V1/editItem
100
+
101
+ at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1919)
102
+
103
+ at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
104
+
105
+ at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:527)
106
+
107
+ at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:334)
108
+
109
+ at servlet.api.EditItem.executePost(EditItem.java:93)
110
+
111
+ ... 26 more
112
+
113
+ ```
114
+
115
+
116
+
17
117
  ### 該当のソースコード
18
118
 
19
119
 
@@ -166,6 +266,8 @@
166
266
 
167
267
  String b = connection.getResponseMessage();
168
268
 
269
+                   InputStream c = connection.getInputStream();
270
+
169
271
 
170
272
 
171
273
  if (connection != null) {
@@ -324,6 +426,8 @@
324
426
 
325
427
  ⑦ getRequestMessage()の追加 結果は Bad Request
326
428
 
429
+ ⑧ connection.getInputStream(); での中身の確認の追加、そこでCatchに飛ばされる。
430
+
327
431
 
328
432
 
329
433
  ### 補足情報(FW/ツールのバージョンなど)

2

回答で教えて頂いた内容を試したことに追加しました。

2020/08/20 00:55

投稿

kait0520
kait0520

スコア1

test CHANGED
File without changes
test CHANGED
@@ -72,7 +72,7 @@
72
72
 
73
73
  sellerIdUtf8 = URLEncoder.encode(sellerId, "UTF-8");
74
74
 
75
- requestString = "?seller_id=" + sellerIdUtf8 +"&";
75
+ requestString = "seller_id=" + sellerIdUtf8 +"&";
76
76
 
77
77
 
78
78
 
@@ -164,6 +164,8 @@
164
164
 
165
165
  int a = connection.getResponseCode();
166
166
 
167
+ String b = connection.getResponseMessage();
168
+
167
169
 
168
170
 
169
171
  if (connection != null) {
@@ -318,6 +320,10 @@
318
320
 
319
321
  ⑤ connection.setInstanceFollowRedirects(false) を使用したContent-Lenghtの手動調整
320
322
 
323
+ ⑥ requestStringの内容の修正
324
+
325
+ ⑦ getRequestMessage()の追加 結果は Bad Request
326
+
321
327
 
322
328
 
323
329
  ### 補足情報(FW/ツールのバージョンなど)

1

必須部分以外のコードを省略しました。

2020/08/20 00:32

投稿

kait0520
kait0520

スコア1

test CHANGED
File without changes
test CHANGED
@@ -258,32 +258,6 @@
258
258
 
259
259
 
260
260
 
261
- if(!StringUtils.isEmpty(form.getProductCategory())){
262
-
263
- textEdit = URLEncoder.encode(form.getProductCategory(), "UTF-8");
264
-
265
-
266
-
267
- requestString = requestString + "product_category=" + textEdit +"&";
268
-
269
- }
270
-
271
-
272
-
273
-
274
-
275
- if(!StringUtils.isEmpty(form.getOriginalPrice())){
276
-
277
- textEdit = URLEncoder.encode(form.getOriginalPrice(), "UTF-8");
278
-
279
-
280
-
281
- requestString = requestString + "original_price=" + textEdit +"&";
282
-
283
- }
284
-
285
-
286
-
287
261
  if(!StringUtils.isEmpty(form.getPrice())){
288
262
 
289
263
  textEdit = URLEncoder.encode(form.getPrice(), "UTF-8");
@@ -296,213 +270,7 @@
296
270
 
297
271
 
298
272
 
299
- if(!StringUtils.isEmpty(form.getSalePrice())){
300
-
301
- textEdit = URLEncoder.encode(form.getSalePrice(), "UTF-8");
302
-
303
-
304
-
305
- requestString = requestString + "sale_price=" + textEdit +"&";
306
-
307
- }
308
-
309
-
310
-
311
- if(!StringUtils.isEmpty(form.getMemberPrice())){
312
-
313
- textEdit = URLEncoder.encode(form.getMemberPrice(), "UTF-8");
314
-
315
-
316
-
317
- requestString = requestString + "member_price=" + textEdit +"&";
318
-
319
- }
320
-
321
-
322
-
323
- if(!StringUtils.isEmpty(form.getHeadline())){
324
-
325
- textEdit = URLEncoder.encode(form.getHeadline(), "UTF-8");
326
-
327
-
328
-
329
- requestString = requestString + "headline=" + textEdit +"&";
330
-
331
- }
332
-
333
-
334
-
335
- if(!StringUtils.isEmpty(form.getCaption())){
336
-
337
- textEdit = URLEncoder.encode(form.getCaption(), "UTF-8");
338
-
339
-
340
-
341
- requestString = requestString + "caption=" + textEdit +"&";
342
-
343
- }
344
-
345
-
346
-
347
- if(!StringUtils.isEmpty(form.getComment())){
348
-
349
- textEdit = URLEncoder.encode(form.getComment(), "UTF-8");
350
-
351
-
352
-
353
- requestString = requestString + "abstract=" + textEdit +"&";
354
-
355
- }
356
-
357
-
358
-
359
- if(!StringUtils.isEmpty(form.getExplanation())){
360
-
361
- textEdit = URLEncoder.encode(form.getExplanation(), "UTF-8");
362
-
363
-
364
-
365
- requestString = requestString + "explanation=" + textEdit +"&";
366
-
367
- }
368
-
369
-
370
-
371
- if(!StringUtils.isEmpty(form.getShipWeight())){
372
-
373
- textEdit = URLEncoder.encode(form.getShipWeight(), "UTF-8");
374
-
375
-
376
-
377
- requestString = requestString + "ship_weight=" + textEdit +"&";
378
-
379
- }
380
-
381
-
382
-
383
- if(!StringUtils.isEmpty(form.getTaxable())){
384
-
385
- textEdit = URLEncoder.encode(form.getTaxable(), "UTF-8");
386
-
387
-
388
-
389
- requestString = requestString + "taxable=" + textEdit +"&";
390
-
391
- }
392
-
393
-
394
-
395
- if(!StringUtils.isEmpty(form.getTaxrateType())){
396
-
397
- textEdit = URLEncoder.encode(form.getTaxrateType(), "UTF-8");
398
-
399
-
400
-
401
- requestString = requestString + "taxrate_type=" + textEdit +"&";
402
-
403
- }
404
-
405
-
406
-
407
- if(!StringUtils.isEmpty(form.getReleaseDate())){
408
-
409
- textEdit = URLEncoder.encode(form.getReleaseDate(), "UTF-8");
410
-
411
-
412
-
413
- requestString = requestString + "release_date=" + textEdit +"&";
414
-
415
- }
416
-
417
-
418
-
419
-
420
-
421
- if(!StringUtils.isEmpty(form.getSaleLimit())){
422
-
423
- textEdit = URLEncoder.encode(form.getSaleLimit(), "UTF-8");
424
-
425
-
426
-
427
- requestString = requestString + "sale_limit=" + textEdit +"&";
428
-
429
- }
430
-
431
-
432
-
433
- if(!StringUtils.isEmpty(form.getSpCode())){
434
-
435
- textEdit = URLEncoder.encode(form.getSpCode(), "UTF-8");
436
-
437
-
438
-
439
- requestString = requestString + "sp_code=" + textEdit +"&";
440
-
441
- }
442
-
443
-
444
-
445
- if(!StringUtils.isEmpty(form.getPointCode())){
446
-
447
- textEdit = URLEncoder.encode(form.getPointCode(), "UTF-8");
448
-
449
-
450
-
451
- requestString = requestString + "point_code=" + textEdit +"&";
452
-
453
- }
454
-
455
-
456
-
457
- if(!StringUtils.isEmpty(form.getBrandCode())){
458
-
459
- textEdit = URLEncoder.encode(form.getBrandCode(), "UTF-8");
460
-
461
-
462
-
463
- requestString = requestString + "brand_code=" + textEdit +"&";
464
-
465
- }
466
-
467
-
468
-
469
-
470
-
471
- if(!StringUtils.isEmpty(form.getProductCode())){
472
-
473
- textEdit = URLEncoder.encode(form.getProductCode(), "UTF-8");
474
-
475
-
476
-
477
- requestString = requestString + "product_code=" + textEdit +"&";
478
-
479
- }
480
-
481
-
482
-
483
- if(!StringUtils.isEmpty(form.getJan())){
273
+ ~~~~~~可読性のため、処理省略~~~~~~
484
-
485
- textEdit = URLEncoder.encode(form.getJan(), "UTF-8");
486
-
487
-
488
-
489
- requestString = requestString + "jan=" + textEdit +"&";
490
-
491
- }
492
-
493
-
494
-
495
- if(!StringUtils.isEmpty(form.getDelivery())){
496
-
497
- textEdit = URLEncoder.encode(form.getDelivery(), "UTF-8");
498
-
499
-
500
-
501
- requestString = requestString + "delivery=" + textEdit +"&";
502
-
503
- }
504
-
505
-
506
274
 
507
275
 
508
276
 
@@ -540,10 +308,16 @@
540
308
 
541
309
 
542
310
 
543
- ① Content-Length要素の記載 結果411エラー
311
+ ① Content-Length要素の記載
544
312
 
545
313
  ② https://teratail.com/questions/34815 を参考にPOST要素の作成
546
314
 
315
+ ③ request部分を必須アイテムだけにして送信処理
316
+
317
+ ④ connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");の加筆
318
+
319
+ ⑤ connection.setInstanceFollowRedirects(false) を使用したContent-Lenghtの手動調整
320
+
547
321
 
548
322
 
549
323
  ### 補足情報(FW/ツールのバージョンなど)