Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中使用FlightAware API_Java_Android_Web Services_Wsdl_Android Ksoap2 - Fatal编程技术网

Java 在Android中使用FlightAware API

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中的数据在地图上直观地表示飞行路径: . 我有一种方法可以直观地表示我的应用程序中的数据;我只需要一种在

概述: 你好我正在尝试使用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类的示例:

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>
 * &lt;complexType name="EnrouteRequest">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="airport" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="howMany" type="{http://www.w3.org/2001/XMLSchema}int"/>
 *         &lt;element name="filter" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="offset" type="{http://www.w3.org/2001/XMLSchema}int"/>
 *       &lt;/sequence>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/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());
            }
        });