使用 REST API 从 Web 服务接收 JSON 数据

Posted

技术标签:

【中文标题】使用 REST API 从 Web 服务接收 JSON 数据【英文标题】:Receive JSON data from a webservice using REST API 【发布时间】:2017-11-28 22:09:01 【问题描述】:

我需要使用 REST API 从这个 Api http://countryapi.gear.host/v1/Country/getCountries 接收 JSON 数据。我需要接收特定国家/地区的NativeNameRegion

我的主要问题是如何发送特定国家/地区的请求(例如我打印Name Australia)并获得NativeNameRegion 的响应 - 澳大利亚,大洋洲(应该是字符串)。

我有这样的课程:

  public class Client 

  public static void main(String[] args) throws ClientProtocolException, IOException 

HttpClient clientGetEntity = new DefaultHttpClient();
HttpGet request = new HttpGet("http://countryapi.gear.host/v1/Country/getCountries?pName=Australia");
request.addHeader("accept", "application/json");
HttpResponse responseGetEntity = clientGetEntity.execute(request);
//String json =EntityUtils.toString((HttpEntity) responseGetEntity);
System.out.println("Request : " + request.toString());
System.out.println("Response : " + responseGetEntity.toString());

【问题讨论】:

API 参数是什么?您要求我们提供有关我们许多人都不知道的服务的信息。首先阅读服务 API 文档 好了,停下,去读How to use/Request Parameters,里面也有例子 我投票决定将此问题作为题外话结束,因为答案很容易通过API Documentation 获得,包括示例 java中没有例子 没有,但是你有可以测试的查询需求 【参考方案1】:

编辑

关于获取具体国家的名称,需要用国家名称进行get请求,如:

http://countryapi.gear.host/v1/Country/getCountries?pName=Australia

此请求的响应: "IsSuccess": true, "UserMessage": null, "TechnicalMessage": null, "TotalCount": 1, "Response": [ "Name": "Australia", "Alpha2Code": "AU", "Alpha3Code": "AUS", "NativeName": "Australia", "Region": "Oceania", "SubRegion": "Australia and New Zealand", "Latitude": "-27", "Longitude": "133", "Area": 7692024, "NumericCode": 36, "NativeLanguage": "eng", "CurrencyCode": "AUD", "CurrencyName": "Australian dollar", "CurrencySymbol": "$", "Flag": "https://api.backendless.com/2F26DFBF-433C-51CC-FF56-830CEA93BF00/473FB5A9-D20E-8D3E-FF01-E93D9D780A00/files/CountryFlags/aus.svg", "FlagPng": "https://api.backendless.com/2F26DFBF-433C-51CC-FF56-830CEA93BF00/473FB5A9-D20E-8D3E-FF01-E93D9D780A00/files/CountryFlagsPng/aus.png" ]

您可以通过以下方式访问 NativeName 和区域:

分别为data.Response[0].NativeNamedata.Response[0].Region

由于API返回的数据始终是JSON字符串,使用前不要忘记解析字符串。

----------------------------------------

我不是 Java 开发人员,但我处理过很多 JSON 数据,还有 C# 和 TypeScript 项目。 首先,您应该看一下这一行: request.addHeader("accept", "application/fson");

恐怕这不是一个有效的 JSON 请求标头,如果我们从哪里开始调试您的代码,如果整个请求的基础有问题,就很难确定问题出在哪里。请更正: request.addHeader("accept", "application/json");再试一次,如果还是一样,我们可以从那里继续调试。

【讨论】:

当然一定是json,我错了,不过不管怎样都行不通 你有 API 文档的链接吗? 已编辑答案,其中包含获取特定国家/地区详细信息的观察结果。抱歉,我无法向您展示在 java 中执行此操作的具体代码,但如果您愿意,我可以编写一个您可以遵循的 typeScript 实现。

以上是关于使用 REST API 从 Web 服务接收 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JavaScript 调用 REST Web 服务 API?

使用 Node.js 服务器为 Next.js 授权 Azure 存储服务 REST API - 从 URL 复制 Blob

从 Rest 服务接收 excel 文件作为 javascript 响应

Ember.js Rest Adapter:无根映射 JSON(.NET Web API)

SOAP和REST API测试技巧

基于Vue.js 与 WordPress Rest API 构建单页应用