使用 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 数据。我需要接收特定国家/地区的NativeName
和Region
。
我的主要问题是如何发送特定国家/地区的请求(例如我打印Name
Australia)并获得NativeName
和Region
的响应 - 澳大利亚,大洋洲(应该是字符串)。
我有这样的课程:
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].NativeName
和data.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 响应