尝试使用restTemplate发布到chatbase时为500

时间:2018-05-31 23:06:02

标签: chatbase

我可以通过SoapUI和curl请求发布到Chatbase https://chatbase.com/api/message。但是,当我尝试使用相同的标题和相同的主体将restTemplate发布到同一个端点时,我得到了{"reason": "Unknown server error.", "status": 500}

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
body.add("api_key", "myApiKey");
body.add("platform", "Web"); 
body.add("user_id", "1");
body.add("type", "user");`

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(body, headers);

restTemplate.exchange("https://chatbase.com/api/message", HttpMethod.POST, request, Void.class);

我已经尝试了我能想到的一切,感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

我不熟悉MultiValueMap,但它是否可能以意外的方式序列化密钥(可能将值放在列表中)?我注意到我们的代码目前会导致返回500并且现在正在修补它。

是否可以提供请求的JSON有效负载?

否则,如果这对您不起作用,请使用您的API密钥与chatbase-feedback@google.com联系,我们可以进一步调查。

答案 1 :(得分:1)

这是最终为我们工作的实施。

    Long stamp = System.currentTimeMillis();

    HttpHeaders headers = new HttpHeaders();
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

    JSONObject body = new JSONObject();
    body.put("api_key", key);
    body.put("type", user);
    body.put("platform", "Web");
    body.put("message", userMessage);
    body.put("intent", intentName);
    body.put("version", "1.0");
    body.put("user_id", userId);
    body.put("not_handled", notHandled);
    body.put("time_stamp", stamp);

    HttpEntity<Object> request = new HttpEntity<>(body, headers);

    String url = "https://chatbase.com/api/message";

    restTemplate.exchange(url, HttpMethod.POST, request, Void.class);

感谢Chatbase的帮助!通过电子邮件和堆栈溢出的响应时间很长

答案 2 :(得分:0)

经过进一步调查后,确定MultiValueMap将字段作为导致错误的列表传递。