他のカスタムオブジェクトのリストを含むパラメータとしてobjectを渡してRESTサービスを呼び出そうとしています。私は「エラー405:リクエストメソッドPOSTがサポートされていません」というエラーが表示されます。上記のコードcontribRequestParamDtoでHttpPostを使用して他のカスタムオブジェクトのリストを含むオブジェクトを渡す方法
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(SSLConnectionSocketFactory.getSystemSocketFactory()).build();
httpPost = new HttpPost("http://api100.abc.xyz.com:9080/abcd/api/sscws/v1/saveContributions");
httpPost.addHeader(WebAppConstants.CONTENT_TYPE, WebAppConstants.APPLICATION_JSON);
httpPost.addHeader(WebAppConstants.ACCEPT, WebAppConstants.APPLICATION_JSON);
httpPost.addHeader(WebAppConstants.X_USERNAME, userContext.getUserID());
httpPost.addHeader(WebAppConstants.X_ENTERPRISE_ID, "123456");
httpPost.addHeader(WebAppConstants.X_UNIQUE_ID, "A548742ATG"); //to do
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String requestParamJson = ow.writeValueAsString(contribRequestParamDto);
httpPost.setEntity(new StringEntity(contribRequestParamDto, WebAppConstants.UTF_8));
コード - クライアント側はthis-
public class ContributionsRequestParamDto {
private String tokenID;
private String taxID;
private String affiliateID;
private long planID;
private String accountNumber;
private String bankAccountNumber;
private String transitId;
private BigDecimal eftAmt;
private Date ppeDate;
private String taxYear;
private Short planType;
private List<ParticipantsDeferralDto> participantsDeferrals;
private List<EmployersContributionDto> employersContributions;
}
RESTエンドポイントがthis-
@Transactional
@RestController
@RequestMapping("/v1")
@Api(value="v1", description="")
public class SscRestController {
@RequestMapping(value="/saveContributions",
method=RequestMethod.POST, produces={MediaType.APPLICATION_JSON_VALUE}, consumes={MediaType.APPLICATION_JSON_VALUE})
@ApiOperation(value="Returns the saved contributions object")
public String saveContributions(@RequestBody ContributionsRequestParam contributionsParam) throws Exception {
return "success";
}
}
ようになりますなりますContributionsRequestParamDtoクラスのオブジェクトであります
Jsonリクエストボディが-
{
"tokenID" : "123456789",
"taxID" : "123456",
"affiliateID" : "123456789",
"planID" : 123456,
"ppeDate" : "2017-10-24",
"taxYear" : "2017",
"planType" : 1,
"participantsDeferrals" : [ {
"taxId" : "555555",
"participantDeferralAmt" : 22.00
} ],
"employersContributions" : [ {
"taxId" : "555555",
"employerContributionAmt" : 22.00
} ]
}
「エラー405:リクエストメソッドPOSTがサポートされていません」というエラーが表示されているため、これは機能しません。 'ContributionsRequestParamDto'オブジェクトからこれらのリストフィールドを削除することで、JSONリクエストボディから 'participantsDeferrals'と 'employersContributions'のリストフィールドを削除すると動作します。だから私は、カスタムオブジェクトとそれに対応するJSONリクエストボディのリストに何か問題があると確信しています。私はここに何かを逃していますか助けてください。ありがとう!