【问题标题】:How to pass post json Object Data to an api using java/Spring/rest [duplicate]如何使用 java/Spring/rest 将 post json 对象数据传递给 api [重复]
【发布时间】:2018-03-09 16:28:06
【问题描述】:

问题陈述

我是 Spring/Rest 应用程序的新手,我在 Object 中有数据。

现在,我需要将此数据传递给 API。

以下是为单个记录附加的示例 curl -

curl --request POST \
  --url http://eventapi-dev.wynk.in/tv/events/v1/event \
  --header 'cache-control: no-cache' \
  --header 'content-type: application/json' \
  --header 'postman-token: 67f73c14-791f-62fe-2b5a-179ba04f67ba' \
  --data '{"name":"hotel california", "createdAt":1505727060471, "steamUrl":"https://www.youtube.com/watch?v=lHje9w7Ev4U"}'

在终端中点击 curl url 后得到的响应是 Ok

谁能指导我如何用 Java 编写代码。

【问题讨论】:

标签: java json spring rest


【解决方案1】:

您可以使用 okhttp (https://github.com/square/okhttp) 调用此 api。 示例:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n\t\"name\":\"hotel california\", \n\t\"createdAt\":1505727060471, \n\t\"steamUrl\":\"https://www.youtube.com/watch?v=lHje9w7Ev4U\"\n}");
Request request = new Request.Builder()
  .url("http://eventapi-dev.wynk.in/tv/events/v1/event")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("cache-control", "no-cache")
  .addHeader("postman-token", "08af0720-79cc-ff3d-2a7d-f208202e5ec0")
  .build();

Response response = client.newCall(request).execute();

【讨论】:

  • @Tran Duc Hung 如何将我的对象传递给此。
  • @JalajChawla:我想答案很清楚,你需要在线传递你的 JSON - RequestBody body = RequestBody.create(..., ...) 或者你的问题是什么?或者,您可以使用 Jackson 等 JSON API 将您的 POJOS 表示为 JSON 对象,然后转换为字符串等。
  • @JalajChawla 你可以使用 gson
【解决方案2】:

网址将是您的终点。这意味着您需要编写一个可以响应您的请求的控制器,在您的请求内部有一些标题,如您所见。这些标头用于登录并告诉 spring 您正在发送 json 文本。此外,如果您检查您的请求,它是“POST”,因此您还需要将此通知您的控制器方法。使用模型捕获所有数据是一种很好的做法。

所以你的任务应该是这样的。

  1. 创建可以响应您的网址的控制器。
  2. 通知您的控制器方法数据为 Json 格式。
  3. 通知您的控制器方法它需要等待“POST”请求。
  4. 将数据解析为模型。

让我们尝试使用代码。

@RequestMapping(value = events.EVENT, method = RequestMethod.POST, consumes = {
        MediaType.APPLICATION_JSON_VALUE }, produces = { MediaType.APPLICATION_JSON_VALUE })
public Event eventAction(@RequestBody Event event){

}

在您的情况下,您需要定义什么是事件。课堂应该是这样的。

public class Quota implements Serializable{
 private String name;
 private Date createAt;
 private String url;

// create getter setter
}

这就是您现在能够响应此请求的全部内容。在您的控制器方法中,您可以执行您的业务逻辑。

【讨论】:

  • 哈哈,这完全不同 :)) 无论如何,也许有人试图复制端点。
【解决方案3】:

您必须使用与 here maily bu 中描述的类似的东西 HttpURLConnectionURL

您注意到,JSON 数据作为 String 传递的 post 场景

然后您可以关注this question,也可以使用该 API 了解更多答案。

您也可以使用Apache HttpClient 并在他们的网站上浏览示例。

Apache HttpClient 示例也是here

我不确定我是否应该将这些网站的相关代码示例复制粘贴到这个答案(为了完整起见),但想法很简单,您必须找到一个 API 来帮助您构建和执行休息请求。

另一个 API 已在 - Trần Đức Hùng 的回答中列出,因此我们在市场上有许多其他 Java API。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2013-12-12
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多