Java 在Android中使用FlightAware API
概述: 你好我正在尝试使用Android中的FlightAware api获取飞行数据、飞行路径等等。我不确定实现这一目标的最佳方式是什么。我应该提到我有一个有效的用户名和api密钥。我正在使用Android Studio 为了更好地了解我在寻找什么样的信息,您可以看看他们的JavaScript。下面是一个HTML页面的图片,它们的JavaScript示例允许使用FlightAware api中的数据在地图上直观地表示飞行路径: . 我有一种方法可以直观地表示我的应用程序中的数据;我只需要一种在Android中首先获取数据的方法 问题:考虑到这一点,我如何查询航班信息,就像你在Android上看到的例子一样 不成功的尝试:如果您转到FlightAware站点的代码示例部分,您可以查看许多建议的实现其api的方法。当然,我向下滚动到Java部分,因为Android使用了相当大一部分Java。然后,我尝试在Android中实现NetBeans示例。问题是,我不知道如何使用在Android Studio中提供的链接之前从未听说过的WSDL。我收集到的只是可以转换成Java类的XML?我尝试使用WSDL2Code网站将WSDL转换为我可以使用的Java类;这在某种程度上是有效的,但不能转换我需要的所有类,仍然缺少一些。然后我尝试了Android插件EasyWSDL生成器的免费版本,但它生成的Java类甚至比WSDL2Code更少。最后,我进入NetBeans IDE,从WSDL链接生成Java类,并能够生成所有Java类。但是,它们在Android中似乎不起作用,因为通过NetBeans生成的Java类倾向于导入javax.xml.bind.annotation,而Android中似乎不包括这些类 下面是我从NetBeans复制的一个生成的Java类的示例:Java 在Android中使用FlightAware API,java,android,web-services,wsdl,android-ksoap2,Java,Android,Web Services,Wsdl,Android Ksoap2,概述: 你好我正在尝试使用Android中的FlightAware api获取飞行数据、飞行路径等等。我不确定实现这一目标的最佳方式是什么。我应该提到我有一个有效的用户名和api密钥。我正在使用Android Studio 为了更好地了解我在寻找什么样的信息,您可以看看他们的JavaScript。下面是一个HTML页面的图片,它们的JavaScript示例允许使用FlightAware api中的数据在地图上直观地表示飞行路径: . 我有一种方法可以直观地表示我的应用程序中的数据;我只需要一种在
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for EnrouteRequest complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="EnrouteRequest">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="airport" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="howMany" type="{http://www.w3.org/2001/XMLSchema}int"/>
* <element name="filter" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="offset" type="{http://www.w3.org/2001/XMLSchema}int"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EnrouteRequest", propOrder = {
"airport",
"howMany",
"filter",
"offset"
})
public class EnrouteRequest {
@XmlElement(required = true)
protected String airport;
protected int howMany;
@XmlElement(required = true)
protected String filter;
protected int offset;
/**
* Gets the value of the airport property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getAirport() {
return airport;
}
/**
* Sets the value of the airport property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setAirport(String value) {
this.airport = value;
}
任何帮助都将不胜感激 我似乎已经找到了使用ksoap2的有效解决方案: 一,。将ksoap2库添加到libs文件夹。你可以找到。 2.做一条新线。 3.在该线程内输入以下代码:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("User",
"APIKEY".toCharArray());
}
});
说明:
名称空间是。
METHOD_NAME是您正在调用的方法的名称,在我的例子中是InRouteRequest。
mbase用于序列化字节数组。
request.addProperty用于添加参数。在我的例子中,这个方法有四个参数。
response是您将要处理的返回对象。这是您正在调用的方法将根据给定参数返回的信息。
重要提示!
您必须在执行上述代码之前进行身份验证,否则将无法访问FlightAware API。您可以使用以下代码进行身份验证:使用用户名替换用户,使用API密钥替换API密钥:
Authenticator.setDefault(new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("User",
"APIKEY".toCharArray());
}
});