【发布时间】: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