如何使用 C# WebClient 向 Google Translate Api 发送 POST 请求?

问题描述 投票:0回答:3

我现在用谷歌搜索了近一个小时,但找不到任何可以帮助我的东西。我是一名初级程序员,从 TeamTreeHouse 学习了 C# 序列化课程。在这里我也学会了如何使用WebClient。

现在我认为一个好的实践项目是制作一个翻译应用程序,将用户在 POST 请求中输入的内容发送给谷歌,然后谷歌将答案作为我反序列化的 Json 返回。

问题是我通读了 api 的文档,但我很困惑我应该向 google 发送什么内容以及到底如何做到这一点?

我知道方法

webclient.Headers.Add(arguments here)
,但是我真的不知道还需要什么。

您可以在这里找到示例:

https://cloud.google.com/translate/docs/translated-text

https://translation.googleapis.com/language/translate/v2 三个查询 每个翻译请求都需要参数:

目标语言:使用目标参数指定您要使用的语言 想翻译成. 源文本字符串:使用 q 参数 指定要翻译的每个文本字符串。 API key:使用key参数 来识别您的应用程序。如果您使用的是 OAuth 2.0 服务 帐户凭据(推荐),请勿提供此参数。

所以问题是该示例 URL 中没有占位符,我可以将 api 密钥 + 源文本字符串放入目标语言。

那么我到底应该向谷歌发送什么,以便它知道我想要什么并向我返回 JSON 文件?

也许任何人都可以帮助我。我知道有一个官方库专门用于此目的,但我想练习序列化并使用 WebClient 类进行网络抓取,所以我想这样做。

c# webclient google-translate
3个回答
6
投票

您特别询问了一个帖子。

  1. 您可以使用此网址:

    https://translation.googleapis.com/language/translate/v2?key=MY_KEY

当然,将 MY_KEY 替换为你的密钥。

  1. 为内容类型添加标题:

    应用程序/json;字符集=utf-8

  2. 将您的文本和目标语言格式化为 JSON 并将其写入您的请求流:

    {"q":"团队合作是这个地点的主要进步因素,看来每个人都愿意在力所能及的情况下提供帮助。","target":"fr"}


1
投票

0
投票

Google 庞大的文档可能是一个挑战。

此特定 API 端点有 2 个类似的文档页面:

我发现第二个更有用。令人困惑的是它同时提到“POST”和“查询参数”。阅读后您可能会认为 API 密钥位于 POST 字段中,这是行不通的。 另一个页面告诉我们,API 密钥可以放入 URL 查询字符串中或作为 HTTP 标头。 https://cloud.google.com/docs/authentication/api-keys#using-with-rest

© www.soinside.com 2019 - 2024. All rights reserved.