[英]Receive JSON data from a webservice using REST API
我需要使用REST API从此Api http://countryapi.gear.host/v1/Country/getCountries接收JSON数据。 我需要接收特定国家/ Region
NativeName
和Region
。
我的主要问题是如何发送针对特定国家/地区的请求(例如,我打印Name
Australia)并获取NativeName
和Region
(澳大利亚,大洋洲)的响应(应该为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].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");
再试一次,如果结果相同,我们可以从那里继续进行调试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.