繁体   English   中英

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

[英]Receive JSON data from a webservice using REST API

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

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

我有这样的课程:

  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());
}

}

编辑

关于获取特定国家/地区的名称,您需要使用国家/地区名称进行获取请求,例如:

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].NativeName data.Response[0].Region

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM