问题标签 [google-http-client]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
107 浏览

java - 带有 Google HTTP 客户端库的数组中的通用类型

我有基本的http响应,如下所示:

数据中可以是任何对象 - 用户、FeedItems 等。

所以我想创建类似的基类

我可以在 Retrofit for Android 库中这样做。

但我无法理解如何在 Google HTTP 客户端库中执行此操作。

0 投票
1 回答
815 浏览

java - 适用于 Java 的 Google HTTP 客户端库引发 HttpResponseException:301 已永久移动

我对适用于 Java 的 Google HTTP 客户端库 (1.22.0) 有疑问。这是我的代码

和 httpRequest.execute() 抛出

以下是来自 Wireshark 的关注

并重复几次。也许问题出在 url 上,因为locationis/ogl/2502758/pakowacz+-+mile+widziane+panie和下一个请求方法 get is /ogl/2502758/pakowacz%20-%20mile%20widziane%20panie。在其他软件和库中,一切正常(谷歌 chrome 浏览器、邮递员 - chrome 插件、JSOUP - java 库)。

有谁知道如何解决这个问题?

0 投票
0 回答
74 浏览

android - Google OAuth authenticate as page account

I'm lost on this one. The problem is simple: what is the correct, recommended way in Android of logging in a Google user, as a page that they own (e.g. they first login and they are presented with what page they wish to authenticate as, to the app)?

The web solution is straightforward - Google's /oauth endpoint automatically redirects to a delegation page into which you choose your main account or the page you wish to continue as. The next page will have a pageId=... extra argument in the URL. As such, your authorization is linked to that specific page, not to the main account.

With Android, I'm completely lost. Every possible official guide out there is either deprecated, un-recommended, or just simply, blantly ignores this simple use-case and only works with getting an OAuth token for the main account, without even a word given to help for the case of users that own pages which can be used as their own identity under the user's account.

What I'm doing now (at the high level), using Google Play Services:

  1. Start an activity intent via AccountPicker.newChooseAccountIntent
  2. User selects an account on device.
  3. Calling GoogleAuthUtil.getToken to get an OAuth token - this triggers the basic OAuth flow which asks the user to authorize the app - NO ACCOUNT SELECTION at this step, like the web flow does!

What I looked at:

  1. Google HTTP Api Client - this one recommends to use Android's AccountManager and never use a "custom" solution to save any refresh tokens, etc. Completely useless for the use-case.
  2. Google Sign-In - this one seems to require a server end-point (wtf?). I tried using it and adding in the OAuth scopes I'm interested in, it didn't even work. I'm not interested in the user's email, and this API seems to be oriented for signing users up rather than authenticating as a Google one.

Other apps I looked at seem to just open a WebView and force the user to login in that, which triggers the normal web flow, with account/page selection after login. I really don't like this since it requires a separate login.

Is there an official stand on this issue and I'm not seeing it?

0 投票
1 回答
405 浏览

java - 使用 google-http-client-xml 解析 xml:使用 XmlObjectParser 解析 xml 元素内容和属性

我似乎无法解析以下 xml 中的值。如果我使用 google-http-java 客户端,解析 xml 类型的解析器类是什么?下面的示例 xml 和解析器

要清楚,我想要开始属性值、结束属性值和文本内容。似乎有效的方法如下

但我无法获得内容价值。

如果我将提要类更改为以下

我只能获取内容而不是属性值!

任何示例源代码都很难找到(在 github、stackoverflow 等)

0 投票
1 回答
2223 浏览

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

我的应用程序在 GAE 中运行。此应用程序对我的 CloudML 进行 REST 调用。

这是代码

通常上面的代码会导致 ReadTimeout 异常。

看来我们可以添加带有自定义超时的HttpRequestInitializer,但是我们需要在创建 HttpRequestFactory 时传递 GoogleCredential HttpRequestFactory requestFactory = httpTransport.createRequestFactory(GoogleCredential);

因此我不能使用自定义 HTTPRequestInitializer。如何增加使用 GoogleCredential HTTPRequestInitializer 创建的 HttpRequestFactory 的 readTimeout?

0 投票
1 回答
826 浏览

java - 垃圾收集似乎关闭了本地执行程序并导致 RejectedExecutionException

间歇性头痛需要帮助。代码正在调用com.google.api.client.http.HttpRequest#executeAsync(),它基本上具有以下逻辑,

该调用java.util.concurrent.RejectedExecutionException有时会遇到,并且从日志看来,当这种情况发生时,它总是伴随着垃圾收集。下面是发生这种情况时的日志模式示例,

根据我的理解,GC 不应该清理这个执行程序,因为它还没有超出范围,但是从错误日志来看,这似乎是行为。

编辑:感谢您的快速回复。我可能需要澄清我也不能随意复制这个,否则我可能会有更多线索。代码通常运行良好,但这种错误很少发生,我们所拥有的只是我为症状粘贴的日志信息。

EDIT2:澄清我粘贴的代码不是我的。google-http-java-client这是我正在使用的开源库。所以我没有办法改变它。我当然可以自己创建一个长期的Executor并用第一种方法调用它,但我正在尝试了解现在的问题。

0 投票
0 回答
504 浏览

java - 来自客户端应用程序的 Firebase ID 令牌在 Java 后端验证时出现异常

我刚刚开始使用 Firebase。React 应用程序 + Java 后端。

React 端授权运行良好,但是当我将用户的 id 令牌发送到后端并尝试验证是否使用 firebase 库时,我得到了一个异常。

我从文档中获取了所有代码。

在js客户端中:

在java中这失败了:

给我:

我正在使用 - com.google.firebase - firebase-admin - 版本 5.5.0

通过 uid 进行的数据库操作和用户检索在 java 后端完美运行。

我下载了所有java源来跟踪错误,我发现“点”检查失败

在类 JsonWebSignature 包 com.google.api.client.json.webtoken google-http-client-1.22.0.jar

当我将点添加到令牌的末尾时,然后检查通过并让用户返回。我想知道我是否做错了什么..是我的令牌格式正确还是java过于急于检查有效性

我从 firebase js 客户端收到的令牌格式为“Header.Payload”,它不包含 JWS RFC“Header.Payload.Signature”中的第二个点

是 webtoken 验证的问题吗?规范不需要第二个点,还是 firebase lib 应归咎于此类令牌?还是我在某个地方错了。

任何帮助将不胜感激,因为我快疯了:)

0 投票
1 回答
543 浏览

java - 带有正文的 Google Http 删除 (Json)

我想使用 HTTP DELETE 方法在下面发送此 JSON 消息。对于这个项目是需要使用 OAuth2 的。所以我使用依赖 google-oauth。Foreach HTTP 请求我使用依赖 google 客户端。

在我的项目中,我使用了下面的代码,但我无法使用 HTTP DELETE 方法发送 JSON 消息。

出现下一个错误:

java.lang.IllegalArgumentException:不支持内容长度非零的 DELETE

有人可以帮我解决这个问题吗?

0 投票
1 回答
119 浏览

linux - <<$$$ 在 Unix shell 中是什么意思?

google-http-client在工作中使用一个项目,当我做一些请求时,我的控制台上打印了以下内容。

我想知道什么<< $$$意思。

如果我尝试将此命令运行到 linux 终端中,似乎<< $$$会使控制台等待更多输入。如果是这种情况,我如何向终端指定我已完成向其提供输入?

稍后编辑:我发现 curl 参数-d @-意味着数据将从标准输入变为红色。

0 投票
0 回答
162 浏览

java - Google HTTP 库 JSON 解析,空值默认为 True

我正在使用 Google HTTP 库来解析从 get 请求接收到的 JSON 数据,但现在发生的奇怪事情是,对于我的 @Keys 之一,作为 JSON 出现的值为 null(hasShipmentBeenPulled):

但是当库解析值时,它默认为“真”。这是课程:

这是输出:

为什么会这样?这不应该默认为false吗?我在过去 2 小时内阅读的所有内容都表明空值应该默认为 false,或者理想情况下,我希望它保持为空值。

PS 下面是使魔术发生的代码:

最终我要完成的是解析 JSON,如果 JSON 中的值设置为 null,我希望 Java 对象也设置为 null。我有一些必填字段将始终传入,但还有其他字段是可选的。如果该字段是可选的,如果它被传递,我仍想收集该信息,但如果不是,它可以保留为 null 或完全忽略。我不确定使用这个库处理该功能的最佳方式。到目前为止,我一直没有成功。

谢谢。