java - google-http-java-client json 更新现有对象

标签 java json google-http-client

我正在尝试在 android 上使用 google-http-java-client 并解析来 self 的服务器的 JSON 响应。 do do that 我正在使用以下代码(由项目示例提供)

    private static final HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();
    private static final JsonFactory JSON_FACTORY = new JacksonFactory();
    HttpRequestFactory requestFactory = HTTP_TRANSPORT
                .createRequestFactory(new HttpRequestInitializer() {
                    @Override
                    public void initialize(HttpRequest request) {
                        request.setParser(new JsonObjectParser(JSON_FACTORY));
                    }
                });
    HttpRequest request = requestFactory.buildGetRequest(new GenericUrl(url + paramsList));
    HttpResponse response = request.execute();

对于新对象一切正常

result = response.parseAs(PxUser.class);

但我需要用 json 字符串中的数据更新一个现有对象。 只有 jackson 我可以使用下面的代码但是谷歌客户端我找不到任何解决方案。

InputStream in = -get-http-reponse-
ObjectMapper mapper = new ObjectMapper();
ObjectReader reader = mapper.readerForUpdating(MySingleton.getInstance());
reader.readValue(InputStream in);

所以我需要一种方法来更新现有对象,就像这个 jackson 示例一样,但要使用客户端。

有办法吗?我必须使用 jackson-databind.jar 吗?我怎样才能做到这一点? 提前致谢

PS:如果需要,我可以切换到 gson,没问题

最佳答案

这取决于接收 API 调用的端点,以及它期望请求的样子。

Google HTTP Java 客户端只是为您处理调用、编码和解码对象、指数退避等过程。您可以创建执行您想要的操作以及服务器期望它的外观的请求。

很可能,您向其发出请求的 API 期望使用 PUT 请求进行对象更新。更新的对象很可能是请求的内容,以某种特定格式编码。让我们假设 JSON,因为您正在解析 JSON 响应。因此,为了示例的目的,假设您要请求一个对象,对其进行修改,然后将其发回。

首先,您获取资源并将其解析到您的对象中:

PxUser myUser = response.parseAs(PxUser.class);

然后你以某种方式修改对象

myUser.setName("Frodo Baggins");

现在您想在 PUT 请求中将其作为 JSON 对象发送回服务器:

// httpbin.org is a wonderful URL to test API calls against as it returns whatever if received.
GenericUrl url = new GenericUrl("http://httpbin.org/put");
JsonHttpContent content = new JsonHttpContent(new JacksonFactory(), myUser);
HttpRequest request = requestFactory.buildPutRequest(url, content);
HttpResponse response = request.execute();
System.out.println(response.parseAsString());

如何编码和更新内容的细节完全取决于您和 API 的规范。如果您也在创建接收调用的服务器,这将特别容易。

如果您使用的是预先存在的 API,您可能希望使用以下内容更新问题 具体问题(API“x”需要一个看起来像 Blah 的响应;我如何在 google-http-java-client 中做到这一点)。

如果您使用的是 Google API,则需要使用 google-api-java-client它为您完成所有这些工作。

关于java - google-http-java-client json 更新现有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16273798/

相关文章:

java - 通过蓝牙 LE 发送数据的两种方法

javascript - 如何使用 Postman 将 JSON 对象作为 JSON 字符串发送?

java - 我怎样才能让 MouseMotionListener 检测到拖动的结束?

java - Android蓝牙发现未找到设备

java - 延迟初始化注入(inject)的 bean 依赖项(Spring 3)

json - Redis 添加 "\"到 JSON 字符串

ios - 如何在 iOS 应用程序中使用 Wordpress REST API?

java - 如何增加 Google HTTP 客户端中的 ReadTimeout

java - 使用 google-http-java-client 发布多部分表单