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

How do I send a POST Request to Google Translate Api using a C# WebClient?

我现在 googled 将近一个小时了,找不到任何可以帮助我的东西。我是一名初级程序员,并从 TeamTreeHouse 接管了 C# 中的序列化课程。在这里我也学会了如何使用WebClient。

现在我认为一个好的实践项目是制作一个翻译应用程序,它在 POST 请求中发送给 google 用户输入,并且 Google returns回答为 Json 我反序列化。

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

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

你可以在这里找到一个例子:

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

https://translation.googleapis.com/language/translate/v2 Three query parameters are required with each translation request:

Target language: Use the target parameter to specify the language you want to translate into. Source text string: Use the q parameter to specify each text string to translate. API key: Use the key parameter to identify your application. If you are using OAuth 2.0 service account credentials (recommended), do not supply this parameter.

所以问题是在那个例子 URL 中没有占位符,我可以把我的 api 键 + 源文本字符串作为目标语言。

那么我到底应该发送什么给 google 以便它知道我想要什么并且 returns 我 JSON 文件?

也许有人可以帮助我。而且我知道有一个官方库正是为了这个,但我想练习序列化并使用 Web scraping 和 WebClient class,所以我想这样做。

此处的文档:https://cloud.google.com/translate/docs/reference/translate#body.QUERY_PARAMETERS

表示使用查询参数 q、target、key 等。 所以你的 URL 应该是 https://translation.googleapis.com/language/translate/v2?key=[yourAPIkey]&target=language

你专门问了一个POST。

  1. 你可以使用这个url:

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

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

  1. 为内容类型添加一个header:

    application/json;字符集=utf-8

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

    {"q":"Team work is a major progress maker at this location, it appears that everyone is willing to help when they can.","target":"fr"}