【问题标题】:Server address or IP for the servlet weather service is currently still hard-codedservlet 天气服务的服务器地址或 IP 目前仍是硬编码的
【发布时间】:2017-06-27 15:11:21
【问题描述】:

您好所有 Java 和 Android 专家,我真的可以在我学校的一些项目上使用您的帮助,因为我一无所知。

在活动 ServletWeatherAPI 中,servlet 天气服务的服务器地址或 IP 目前仍然是硬编码的,例如:

Private final static String baseURL = "http://192.168.178.21:8080/WeatherService/weather? ";         

在MultiWeatherApp的Settings选项卡中,我需要添加一个选项来指定我的服务器的地址或IP(没有servlet路径“/WeatherService/ 天气? ”)。 对此天气服务的 Web 请求应使用存储在 SharedPreferences 中的地址。

有人知道我该怎么做吗?因为我没有。 我知道如何将选项添加到preferences.xml,但不知道其余的。 我从 github 附加我的项目和调用 ServletWeatherAPI。 任何帮助将不胜感激,我不是专家,所以伪代码将非常有助于理解它。 my app in Github

public class ServletWeatherAPI implements IWeatherAPI {
private final static String baseURL = "http://localhost:8080/WeatherService/weather?";
private JSONObject weatherdata;

private ServletWeatherAPI(String queryString) throws
        IOException, JSONException {
    String result = HttpRequest.request(baseURL + queryString);
    weatherdata = new JSONObject(result);
}

public static IWeatherAPI fromLocationName(String locationName) throws IOException, JSONException {
    return new ServletWeatherAPI("q=" + URLEncoder.encode(locationName, "UTF-8"));
}

public static IWeatherAPI fromLatLon(double lat, double
        lon) throws IOException, JSONException {
    return new ServletWeatherAPI("lat=" + lat + "&lon=" + lon);
}


@Override
public double getTemperature() throws JSONException {
    return weatherdata.getDouble("tempC");
}

@Override
public String getDescription() throws JSONException {
    return weatherdata.getString("description");
}

@Override
public String getError() {
    return "";
}

@Override
public String getProviderInfo() {
    return "ServletWeatherService";
}

@Override
public String getIconPath() throws JSONException {
    return "serlvetweatherservice/" +
            weatherdata.getString("icon");
}

}

【问题讨论】:

  • I know how to add to the preferences.xml the option 。不清楚。你的意思是?为什么你不能使用它?
  • 在设置菜单中添加一个选项(它在preferences.xml中设置)的设计点我很清楚,但如何编程却不是。
  • 不清楚你想编程什么以及你有什么问题。
  • 我会说得更清楚:
  • 所以你很难改变baseUrl?您可以在构造函数中通过添加一个 baseUrl 参数来做到这一点。将private ServletWeatherAPI(String queryString) 更改为private ServletWeatherAPI(String baseUrl, String queryString)。并在构造函数成员中添加 'this.baseUrl = baseUrl;' 之后你会看到你应该声明 baseUrl 与 Private final static String baseURL 不同。

标签: java android web-services servlets sharedpreferences


【解决方案1】:

如果有人感兴趣,我已经找到了解决方案,这是我的 git: MultiWeatherApp

【讨论】:

    猜你喜欢
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2017-05-15
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多